193 lines
5.0 KiB
Markdown
193 lines
5.0 KiB
Markdown
# 首次登录修改密码功能 - 测试清单
|
||
|
||
## 测试前准备
|
||
|
||
1. ✅ 执行安装脚本或 SQL,添加 `is_paw` 字段
|
||
2. ✅ 设置测试账号:`UPDATE la_admin SET is_paw = 0 WHERE id = 1;`
|
||
3. ✅ 确认前后端代码已更新
|
||
|
||
## 测试场景
|
||
|
||
### 场景 1:正常登录流程
|
||
|
||
**步骤:**
|
||
1. 使用 `is_paw = 0` 的账号登录
|
||
2. 观察是否自动跳转到修改密码页面
|
||
3. 输入新密码(至少 6 位)
|
||
4. 点击"确认修改"
|
||
5. 观察是否提示"密码修改成功,请重新登录"
|
||
6. 使用新密码重新登录
|
||
7. 观察是否能正常进入系统
|
||
|
||
**预期结果:**
|
||
- ✅ 登录后自动跳转到修改密码页面
|
||
- ✅ 修改密码成功
|
||
- ✅ 使用新密码能正常登录
|
||
- ✅ 数据库中 `is_paw` 已更新为 1
|
||
|
||
### 场景 2:URL 防护测试(重要!)
|
||
|
||
**步骤:**
|
||
1. 使用 `is_paw = 0` 的账号登录
|
||
2. 登录后会跳转到修改密码页面
|
||
3. 在浏览器地址栏直接输入其他页面 URL(如:`/workbench/index`)
|
||
4. 按回车访问
|
||
|
||
**预期结果:**
|
||
- ✅ 无论输入什么 URL,都会被强制跳转回修改密码页面
|
||
- ✅ 无法绕过修改密码页面访问其他页面
|
||
|
||
### 场景 3:密码验证测试
|
||
|
||
**步骤:**
|
||
1. 在修改密码页面输入少于 6 位的密码
|
||
2. 点击"确认修改"
|
||
|
||
**预期结果:**
|
||
- ✅ 提示"密码长度不能少于6位"
|
||
|
||
**步骤:**
|
||
1. 两次输入不同的密码
|
||
2. 点击"确认修改"
|
||
|
||
**预期结果:**
|
||
- ✅ 提示"两次输入的密码不一致"
|
||
|
||
### 场景 4:已修改密码的用户
|
||
|
||
**步骤:**
|
||
1. 使用 `is_paw = 1` 的账号登录
|
||
2. 观察是否直接进入系统
|
||
|
||
**预期结果:**
|
||
- ✅ 直接进入系统,不跳转到修改密码页面
|
||
|
||
**步骤:**
|
||
1. 在浏览器地址栏输入 `/change-password`
|
||
2. 按回车访问
|
||
|
||
**预期结果:**
|
||
- ✅ 自动跳转到首页,无法访问修改密码页面
|
||
|
||
### 场景 5:未登录用户
|
||
|
||
**步骤:**
|
||
1. 退出登录
|
||
2. 在浏览器地址栏输入 `/change-password`
|
||
3. 按回车访问
|
||
|
||
**预期结果:**
|
||
- ✅ 自动跳转到登录页面
|
||
|
||
### 场景 6:企业微信登录
|
||
|
||
**步骤:**
|
||
1. 设置企业微信绑定的管理员 `is_paw = 0`
|
||
2. 使用企业微信登录
|
||
3. 观察是否跳转到修改密码页面
|
||
|
||
**预期结果:**
|
||
- ✅ 登录后自动跳转到修改密码页面
|
||
- ✅ 修改密码流程与账号密码登录一致
|
||
|
||
### 场景 7:页面刷新测试(重要!)
|
||
|
||
**步骤:**
|
||
1. 使用 `is_paw = 0` 的账号登录
|
||
2. 跳转到修改密码页面后,刷新浏览器(F5 或 Ctrl+R)
|
||
3. 观察页面状态
|
||
|
||
**预期结果:**
|
||
- ✅ 刷新后仍然停留在修改密码页面
|
||
- ✅ 不会跳转到其他页面
|
||
|
||
**步骤(进阶测试):**
|
||
1. 使用 `is_paw = 0` 的账号登录
|
||
2. 跳转到修改密码页面
|
||
3. 在地址栏输入其他页面 URL(如 `/workbench/index`)
|
||
4. 按回车
|
||
5. 观察是否跳转回修改密码页面
|
||
6. 刷新浏览器
|
||
7. 观察是否仍然在修改密码页面
|
||
|
||
**预期结果:**
|
||
- ✅ 输入其他 URL 后被拦截,跳转回修改密码页面
|
||
- ✅ 刷新后仍然在修改密码页面
|
||
- ✅ 无法通过任何方式绕过
|
||
|
||
### 场景 8:多标签页测试
|
||
|
||
**步骤:**
|
||
1. 使用 `is_paw = 0` 的账号登录
|
||
2. 跳转到修改密码页面
|
||
3. 打开新标签页,访问系统其他页面
|
||
|
||
**预期结果:**
|
||
- ✅ 新标签页也会被强制跳转到修改密码页面
|
||
|
||
## 数据库验证
|
||
|
||
### 修改前
|
||
```sql
|
||
SELECT id, account, is_paw FROM la_admin WHERE id = 1;
|
||
-- 应该显示 is_paw = 0
|
||
```
|
||
|
||
### 修改后
|
||
```sql
|
||
SELECT id, account, is_paw FROM la_admin WHERE id = 1;
|
||
-- 应该显示 is_paw = 1
|
||
```
|
||
|
||
## 常见问题排查
|
||
|
||
### 问题 1:登录后没有跳转到修改密码页面
|
||
|
||
**检查:**
|
||
- 数据库中 `is_paw` 字段是否为 0
|
||
- 前端代码是否正确判断 `is_paw` 字段
|
||
- 浏览器控制台是否有错误
|
||
|
||
### 问题 2:刷新后可以进入系统
|
||
|
||
**检查:**
|
||
- 后端 `AdminLogic::detail()` 方法是否返回 `is_paw` 字段
|
||
- 前端 `getUserInfo()` 方法是否更新 `isPaw` 状态
|
||
- 路由守卫是否在获取用户信息后检查 `isPaw`
|
||
- 浏览器控制台查看 API 返回的数据是否包含 `is_paw`
|
||
|
||
### 问题 3:可以通过 URL 绕过修改密码页面
|
||
|
||
**检查:**
|
||
- `permission.ts` 路由守卫是否正确配置
|
||
- `userStore.isPaw` 状态是否正确存储
|
||
- 浏览器控制台查看路由守卫是否执行
|
||
|
||
### 问题 4:修改密码后 `is_paw` 没有更新
|
||
|
||
**检查:**
|
||
- 后端 `changeFirstPassword` 方法是否正确更新数据库
|
||
- 查看数据库确认字段值
|
||
- 检查后端日志是否有错误
|
||
|
||
### 问题 5:修改密码后无法登录
|
||
|
||
**检查:**
|
||
- 密码加密方式是否正确(应使用 `create_password` 函数)
|
||
- 检查后端日志
|
||
- 尝试重置密码
|
||
|
||
## 测试完成标准
|
||
|
||
- ✅ 所有 8 个测试场景都通过
|
||
- ✅ 数据库字段正确更新
|
||
- ✅ 无法通过任何方式绕过修改密码页面
|
||
- ✅ 密码验证规则正常工作
|
||
- ✅ 修改密码后能正常登录使用系统
|
||
|
||
## 性能测试
|
||
|
||
- ✅ 路由守卫不影响正常用户的访问速度
|
||
- ✅ 登录流程响应时间正常(< 2 秒)
|
||
- ✅ 修改密码操作响应时间正常(< 1 秒)
|