数据库中存储的是明文密码 123,但后端代码使用 BCrypt 加密验证,导致登录失败。
直接在数据库中执行以下SQL语句:
-- 更新fbs用户的密码为BCrypt加密后的"123"
UPDATE user SET password = '$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy', user_role = 1 WHERE username = 'fbs';
执行步骤:
book 数据库fbs 和密码 123 登录访问(在浏览器或Postman中):
http://localhost:8080/api/admin/password/encode?password=123
你会得到类似这样的响应:
{
"code": 200,
"message": "操作成功",
"data": {
"original": "123",
"encoded": "$2a$10$...",
"sql": "UPDATE user SET password = '$2a$10$...' WHERE username = '你的用户名';"
}
}
复制返回的SQL语句,在数据库中执行
重新登录
使用注册接口创建新管理员:
POST http://localhost:8080/api/admin/register
Content-Type: application/json
{
"username": "admin",
"password": "123456",
"nickname": "管理员"
}
使用新账号登录
执行SQL后,可以验证:
SELECT username, password, user_role, status FROM user WHERE username = 'fbs';
应该看到:
password 是以 $2a$10$ 开头的BCrypt加密字符串user_role 为 1(管理员)status 为 1(正常)user_role = 1 才能登录管理端status = 1 账号才能正常使用