2.2 KiB
2.2 KiB
管理员密码哈希问题修复报告
问题描述
系统在启动时,初始化的管理员密码哈希值不正确,导致无法登录系统。
问题原因
-
数据库初始化脚本问题:
init_mysql.sql文件中第247行硬编码了错误的密码哈希值:- 错误的哈希:
pbkdf2:sha256:260000$7Q8M9V2N4P6R8S0T$8A9B0C1D2E3F4A5B6C7D8E9F0A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6 - 问题: salt和hash部分不是有效的编码格式
- 错误的哈希:
-
正确的哈希格式:
- 格式:
pbkdf2:sha256:iterations$salt_hex$hash_hex - 正确的哈希:
pbkdf2:sha256:600000$03EhhcMpfObidblD$e0f7de0e1028c8ab004c48ec28a3380950568080abd214055f67d02300e2786d
- 格式:
修复方案
1. 重置数据库中的密码哈希
from app import create_app, db
from app.models.admin import Admin
from werkzeug.security import generate_password_hash
app = create_app()
with app.app_context():
admin = Admin.query.filter_by(username='admin').first()
admin.password_hash = generate_password_hash('admin123', method='pbkdf2:sha256')
db.session.commit()
2. 修复初始化脚本
已更新 init_mysql.sql 文件,将错误的哈希值替换为正确的哈希值。
验证结果
测试用例
- ✅ 使用正确密码 'admin123' 登录 - 成功
- ✅ 使用错误密码 'wrongpassword' 登录 - 被正确拒绝
- ✅ 使用空密码登录 - 被正确拒绝
登录信息
- 用户名: admin
- 密码: admin123
- 状态: ✅ 可以正常登录
后续建议
- 修改默认密码: 首次登录后请立即修改默认密码
- 使用强密码: 建议使用包含大小写字母、数字和特殊字符的强密码
- 定期更换密码: 建议每3-6个月更换一次密码
- 启用双因素认证: 如可能,启用2FA增强安全性
相关文件
app/models/admin.py- 管理员模型,包含密码验证逻辑init_mysql.sql- 数据库初始化脚本reset_admin_password.py- 密码重置脚本(已创建)test_login_fixed.py- 登录功能测试脚本(已创建)
总结
问题已完全修复。管理员可以使用用户名 admin 和密码 admin123 正常登录系统。