61 lines
2.2 KiB
Markdown
61 lines
2.2 KiB
Markdown
|
|
# 管理员密码哈希问题修复报告
|
|||
|
|
|
|||
|
|
## 问题描述
|
|||
|
|
系统在启动时,初始化的管理员密码哈希值不正确,导致无法登录系统。
|
|||
|
|
|
|||
|
|
## 问题原因
|
|||
|
|
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` 正常登录系统。
|