You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask更新密码后无法登录问题排查求助

Flask密码更新功能登录失败问题排查与解决

核心问题

你的代码存在双重哈希的错误:
在change_password路由中,已经正确生成了密码哈希值hashed_password = bcrypt.generate_password_hash(new_password),但调用update_user_password函数时,函数内部又对传入的参数再次执行bcrypt.generate_password_hash(new_password)——这里的参数实际是已哈希的字符串,导致数据库存储的是哈希值的哈希,登录时验证自然不匹配。

修复代码

修改update_user_password函数,直接使用传入的已哈希密码:

def update_user_password(user_id, new_password):
    user = User.query.get(user_id)
    if user:
        # 移除重复的哈希生成,直接赋值传入的哈希结果
        user.pwd = new_password
        db.session.commit()

路由中的哈希生成逻辑保持不变:

hashed_password = bcrypt.generate_password_hash(new_password)
update_user_password(current_user.id, hashed_password)

额外检查项

  • 确认User模型的pwd字段长度足够,bcrypt哈希值通常为60字符,建议设置为String(128)或更长,避免截断导致验证失败。
  • 验证登录逻辑是否正确使用bcrypt.check_password_hash(user.pwd, 输入的明文密码)进行匹配。

内容的提问来源于stack exchange,提问作者Kabllez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 14:02:21