# 首次登录修改密码功能 - 测试清单 ## 测试前准备 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 秒)