Kamixitong/password_fix_summary.md
2025-12-12 11:35:14 +08:00

2.2 KiB
Raw Blame History

管理员密码哈希问题修复报告

问题描述

系统在启动时,初始化的管理员密码哈希值不正确,导致无法登录系统。

问题原因

  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. 重置数据库中的密码哈希

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 正常登录系统。