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