# 快速修复密码问题 ## 问题原因 数据库中存储的是**明文密码** `123`,但后端代码使用 **BCrypt** 加密验证,导致登录失败。 ## 解决方案(3种方法) ### 方法1:使用SQL更新密码(推荐) 直接在数据库中执行以下SQL语句: ```sql -- 更新fbs用户的密码为BCrypt加密后的"123" UPDATE user SET password = '$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', user_role = 1 WHERE username = 'fbs'; ``` **执行步骤:** 1. 打开你的数据库管理工具(Navicat、MySQL Workbench等) 2. 连接到 `book` 数据库 3. 执行上面的SQL语句 4. 重启后端服务 5. 使用用户名 `fbs` 和密码 `123` 登录 ### 方法2:使用API生成密码 1. 启动后端服务 2. 访问(在浏览器或Postman中): ``` http://localhost:8080/api/admin/password/encode?password=123 ``` 3. 你会得到类似这样的响应: ```json { "code": 200, "message": "操作成功", "data": { "original": "123", "encoded": "$2a$10$...", "sql": "UPDATE user SET password = '$2a$10$...' WHERE username = '你的用户名';" } } ``` 4. 复制返回的SQL语句,在数据库中执行 5. 重新登录 ### 方法3:重新注册管理员账号 1. 使用注册接口创建新管理员: ```bash POST http://localhost:8080/api/admin/register Content-Type: application/json { "username": "admin", "password": "123456", "nickname": "管理员" } ``` 2. 使用新账号登录 ## 验证修复 执行SQL后,可以验证: ```sql SELECT username, password, user_role, status FROM user WHERE username = 'fbs'; ``` 应该看到: - `password` 是以 `$2a$10$` 开头的BCrypt加密字符串 - `user_role` 为 `1`(管理员) - `status` 为 `1`(正常) ## 注意事项 1. **密码加密**:所有密码都应该使用BCrypt加密存储,不能存储明文 2. **管理员权限**:确保 `user_role = 1` 才能登录管理端 3. **账号状态**:确保 `status = 1` 账号才能正常使用