快速修复密码问题.md 2.0 KB

快速修复密码问题

问题原因

数据库中存储的是明文密码 123,但后端代码使用 BCrypt 加密验证,导致登录失败。

解决方案(3种方法)

方法1:使用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. 你会得到类似这样的响应:

    {
     "code": 200,
     "message": "操作成功",
     "data": {
       "original": "123",
       "encoded": "$2a$10$...",
       "sql": "UPDATE user SET password = '$2a$10$...' WHERE username = '你的用户名';"
     }
    }
    
  4. 复制返回的SQL语句,在数据库中执行

  5. 重新登录

方法3:重新注册管理员账号

  1. 使用注册接口创建新管理员:

    POST http://localhost:8080/api/admin/register
    Content-Type: application/json
       
    {
     "username": "admin",
     "password": "123456",
     "nickname": "管理员"
    }
    
  2. 使用新账号登录

验证修复

执行SQL后,可以验证:

SELECT username, password, user_role, status FROM user WHERE username = 'fbs';

应该看到:

  • password 是以 $2a$10$ 开头的BCrypt加密字符串
  • user_role1(管理员)
  • status1(正常)

注意事项

  1. 密码加密:所有密码都应该使用BCrypt加密存储,不能存储明文
  2. 管理员权限:确保 user_role = 1 才能登录管理端
  3. 账号状态:确保 status = 1 账号才能正常使用