# 快速测试指南 ## 🚀 Phase 2 认证系统测试 ### 前置准备 1. **确保数据库运行** ```bash # 检查数据库连接 npm run prisma:studio ``` 2. **配置环境变量** ```bash # 复制 .env.example 到 .env cp .env.example .env # 编辑 .env,至少配置: # - DATABASE_URL # - JWT_SECRET ``` 3. **运行系统初始化** ```bash npx tsx scripts/init-system.ts ``` **预期输出**: ``` 🚀 开始系统初始化... ✅ 数据库连接成功 ✅ 默认超级管理员创建成功 📧 邮箱: admin@system.local 👤 姓名: SuperAdmin 🔑 密码: Admin@123456 ⚠️ 请在首次登录后立即修改邮箱、姓名和密码! ``` --- ## 📝 测试步骤 ### 1. 启动开发服务器 ```bash npm run dev ``` 访问:http://localhost:3000 --- ### 2. 测试登录功能 #### 测试用例 1:使用邮箱登录 1. 访问 http://localhost:3000/login 2. 输入: - 邮箱/姓名:`admin@system.local` - 密码:`Admin@123456` 3. 点击"登录" **预期结果**: - ✅ 登录成功 - ✅ 自动跳转到 `/first-login` 页面 #### 测试用例 2:使用姓名登录 1. 访问 http://localhost:3000/login 2. 输入: - 邮箱/姓名:`SuperAdmin` - 密码:`Admin@123456` 3. 点击"登录" **预期结果**: - ✅ 登录成功 - ✅ 自动跳转到 `/first-login` 页面 #### 测试用例 3:错误密码 1. 访问 http://localhost:3000/login 2. 输入: - 邮箱/姓名:`admin@system.local` - 密码:`WrongPassword` 3. 点击"登录" **预期结果**: - ❌ 显示错误:"密码错误" - 💡 显示建议:"您正在使用邮箱登录,如果忘记密码,请联系管理员重置" #### 测试用例 4:不存在的用户 1. 访问 http://localhost:3000/login 2. 输入: - 邮箱/姓名:`notexist@example.com` - 密码:`Password@123` 3. 点击"登录" **预期结果**: - ❌ 显示错误:"该邮箱未注册" - 💡 显示建议:"如果您想使用姓名登录,请直接输入姓名" --- ### 3. 测试首次登录强制修改 1. 使用默认账号登录后,自动跳转到 `/first-login` 2. 输入新信息: - 新邮箱:`admin@company.com` - 新姓名:`管理员` - 新密码:`NewAdmin@123456` - 确认密码:`NewAdmin@123456` 3. 点击"确认修改" **预期结果**: - ✅ 修改成功 - ✅ 自动跳转到首页 `/` - ✅ Token 已更新 #### 测试密码强度验证 输入弱密码(如 `123456`),观察实时提示: **预期显示**: - ❌ 密码长度至少 8 位 - ❌ 必须包含至少一个大写字母 - ❌ 必须包含至少一个小写字母 - ❌ 必须包含至少一个特殊字符 - 🔒 提交按钮被禁用 输入强密码(如 `NewAdmin@123456`),观察提示: **预期显示**: - ✅ 密码强度符合要求 - 🔓 提交按钮可用 --- ### 4. 测试注册功能(API) 使用 Postman 或 curl 测试: ```bash curl -X POST http://localhost:3000/api/auth/register \ -H "Content-Type: application/json" \ -d '{ "email": "designer@company.com", "name": "设计师张三", "password": "Designer@123456", "role": "DESIGNER" }' ``` **预期响应**: ```json { "message": "注册成功", "user": { "id": "xxx", "email": "designer@company.com", "name": "设计师张三", "role": "DESIGNER", "status": "ACTIVE", "createdAt": "2025-12-12T..." } } ``` #### 测试姓名重复 再次注册相同姓名: ```bash curl -X POST http://localhost:3000/api/auth/register \ -H "Content-Type: application/json" \ -d '{ "email": "another@company.com", "name": "设计师张三", "password": "Designer@123456" }' ``` **预期响应**: ```json { "error": "该姓名已被使用", "suggestion": "请使用不同的姓名或添加后缀(如:张三_设计、李四_建模)" } ``` --- ### 5. 验证数据库记录 打开 Prisma Studio: ```bash npm run prisma:studio ``` 访问:http://localhost:5555 #### 检查 User 表 - ✅ 应该有 1 个超级管理员(修改后的信息) - ✅ 应该有 1 个设计师(如果注册成功) - ✅ `isFirstLogin` 应该为 `false`(修改后) #### 检查 ActivityLog 表 应该有以下日志记录: - `USER_REGISTER` - 用户注册 - `USER_LOGIN` - 用户登录 - `USER_FIRST_LOGIN_UPDATE` - 首次登录修改信息 --- ## 🔍 常见问题 ### Q1: 数据库连接失败 **解决方案**: 1. 检查 PostgreSQL 是否运行 2. 检查 `.env` 中的 `DATABASE_URL` 是否正确 3. 运行 `npx prisma migrate dev` 确保数据库结构最新 ### Q2: JWT Token 无效 **解决方案**: 1. 检查 `.env` 中是否配置了 `JWT_SECRET` 2. 清除浏览器 localStorage 3. 重新登录 ### Q3: 首次登录页面无法访问 **解决方案**: 1. 确保已登录(localStorage 中有 `auth_token`) 2. 检查 Token 是否有效 3. 检查用户的 `isFirstLogin` 字段 ### Q4: 密码强度验证不通过 **解决方案**: 确保密码满足以下要求: - 至少 8 位 - 包含大写字母 - 包含小写字母 - 包含数字 - 包含特殊字符(!@#$%^&*(),.?":{}|<>) --- ## ✅ 测试检查清单 - [ ] 系统初始化成功 - [ ] 使用邮箱登录成功 - [ ] 使用姓名登录成功 - [ ] 错误密码提示正确 - [ ] 不存在用户提示正确 - [ ] 首次登录强制修改成功 - [ ] 密码强度实时验证正常 - [ ] 注册 API 正常工作 - [ ] 姓名重复检查正常 - [ ] 数据库记录正确 - [ ] 操作日志记录正确 --- ## 📊 性能检查 ### API 响应时间 使用浏览器开发者工具检查: - 登录 API:< 200ms - 注册 API:< 200ms - 首次登录修改 API:< 200ms ### 页面加载时间 - 登录页面:< 1s - 首次登录页面:< 1s --- ## 🎯 下一步 测试通过后,可以开始 Phase 3:权限系统实现 - 权限检查函数 - 权限中间件 - 前端权限控制 - 用户管理界面 --- **祝测试顺利!** 🚀