# API快速测试指南 ## 概述 本文档提供认证系统API的快速测试方法,适用于开发和调试场景。 ## 前置条件 1. **启动开发服务器** ```bash php artisan serve ``` 2. **确认数据库数据** ```bash php artisan db:seed --class=AdminUserSeeder ``` ## 测试用户 | 用户类型 | 用户名 | 密码 | 说明 | |---------|--------|------|------| | 管理员 | admin | 123456 | 超级管理员权限 | | 测试用户 | test | 123456 | 普通用户权限 | ## 接口测试 (cURL) ### 1. 登录获取Token ```bash curl -X POST http://localhost:8000/admin/auth/login \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "username": "admin", "password": "123456", "device_name": "测试设备" }' ``` **成功响应示例**: ```json { "success": true, "data": { "user": { "id": 1, "username": "admin", "nickname": "超级管理员", "email": "admin@example.com" }, "token": { "access_token": "1|xxxxxxxxxxxx", "token_type": "Bearer" } }, "code": 200, "message": "登录成功" } ``` ### 2. 获取用户信息 ```bash # 替换 YOUR_TOKEN 为实际的Token curl -X GET http://localhost:8000/admin/auth/me \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json" ``` ### 3. 获取设备列表 ```bash curl -X GET http://localhost:8000/admin/auth/devices \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json" ``` ### 4. 刷新Token ```bash curl -X POST http://localhost:8000/admin/auth/refresh \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{ "device_name": "刷新后的设备" }' ``` ### 5. 登出当前设备 ```bash curl -X POST http://localhost:8000/admin/auth/logout \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json" ``` ### 6. 登出所有设备 ```bash curl -X POST http://localhost:8000/admin/auth/logout-all \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json" ``` ### 7. 访问仪表盘 ```bash curl -X GET http://localhost:8000/admin/dashboard \ -H "Authorization: Bearer YOUR_TOKEN" \ -H "Accept: application/json" ``` ## 接口测试 (JavaScript) ### 浏览器控制台测试 ```javascript // 1. 登录 async function testLogin() { const response = await fetch('http://localhost:8000/admin/auth/login', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify({ username: 'admin', password: '123456', device_name: 'Browser Test' }) }); const data = await response.json(); console.log('登录结果:', data); if (data.success) { // 保存Token到localStorage localStorage.setItem('token', data.data.token.access_token); console.log('Token已保存到localStorage'); } return data; } // 2. 测试认证接口 async function testAuthAPI() { const token = localStorage.getItem('token'); if (!token) { console.error('请先登录获取Token'); return; } const response = await fetch('http://localhost:8000/admin/auth/me', { headers: { 'Authorization': `Bearer ${token}`, 'Accept': 'application/json' } }); const data = await response.json(); console.log('用户信息:', data); return data; } // 3. 测试登出 async function testLogout() { const token = localStorage.getItem('token'); if (!token) { console.error('请先登录获取Token'); return; } const response = await fetch('http://localhost:8000/admin/auth/logout', { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Accept': 'application/json' } }); const data = await response.json(); console.log('登出结果:', data); if (data.success) { localStorage.removeItem('token'); console.log('Token已从localStorage清除'); } return data; } // 运行测试 async function runTests() { console.log('=== 开始API测试 ==='); // 测试登录 console.log('\n1. 测试登录...'); await testLogin(); // 等待1秒 await new Promise(resolve => setTimeout(resolve, 1000)); // 测试获取用户信息 console.log('\n2. 测试获取用户信息...'); await testAuthAPI(); // 等待1秒 await new Promise(resolve => setTimeout(resolve, 1000)); // 测试登出 console.log('\n3. 测试登出...'); await testLogout(); console.log('\n=== 测试完成 ==='); } ``` ### 完整测试示例 ```html API测试页面

认证系统API测试

1. 登录测试

2. 用户信息测试

3. 设备管理测试

4. 登出测试

``` ## 常见错误排查 ### 1. 401 Unauthorized - 检查Token是否正确 - 检查Authorization头格式是否为 `Bearer {token}` - 确认Token是否已过期 ### 2. 404 Not Found - 检查路由是否正确注册 - 运行 `php artisan route:list | findstr admin` 查看路由列表 ### 3. 422 Validation Error - 检查请求参数是否完整 - 确认Content-Type为application/json ### 4. 500 Internal Server Error - 检查Laravel日志:`storage/logs/laravel.log` - 确认数据库连接是否正常 ## 性能测试 ### 并发登录测试 ```bash # 使用ab工具进行并发测试 ab -n 100 -c 10 -p login.json -T application/json http://localhost:8000/admin/auth/login ``` 其中 `login.json` 文件内容: ```json { "username": "admin", "password": "123456", "device_name": "压力测试" } ``` --- **注意**: 本测试指南仅用于开发环境,生产环境请使用HTTPS并配置适当的安全措施。