[P1 Hotfix] 修复登录故障 - password_hasher导入错误 #180
Reference in New Issue
Block a user
Delete Branch "hotfix/fix-login-p1-import-error"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题描述
生产环境所有用户无法登录,返回401 "邮箱或密码错误"。注册功能正常。
根因分析
login_use_case.py第14行错误地导入了模块而非实例:这导致调用
password_hasher.verify_password()时抛出:异常被
except Exception捕获后返回"Login failed: ...",最终在路由层被转换为通用的 "邮箱或密码错误" 错误。修复内容
修改导入语句,导入正确的
PasswordHasher实例而非模块。验证
find_by_email和verify_password直接调用均正常紧急程度
P1 紧急 - 登录功能完全不可用,影响所有用户
修复后需要立即部署到生产环境。
✅ 代码审计通过 — 可立即合并
审计范围:1 个文件,1 行 import 修改
根因验证
password_hasher.pyL164 定义了实例password_hasher = PasswordHasher(rounds=12)。原代码
from packages.application.auth import password_hasher导入的是模块(__init__.py导入了password_hasher实例,但from package import name优先匹配子模块名),导致调用password_hasher.verify_password()时抛出AttributeError,被except Exception捕获后统一返回"邮箱或密码错误"。修复后
from packages.application.auth.password_hasher import password_hasher直接导入实例,正确。结论
0 P0 / 0 P1 / 0 P2,修改精准,根因定位准确,建议立即合并到 develop 并部署到生产环境恢复登录功能。