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