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

Flask应用中使用bcrypt出现异常错误求助

解决Flask中bcrypt的AttributeError: 'bcrypt._bcrypt' has no attribute 'hashpass'问题
  • 问题根源:hashpass是bcrypt旧版本(2.0.x及更早)的API,3.x以上版本已移除该方法,改用标准的hashpw(哈希密码)和checkpw(验证密码)方法。

  • 修正密码验证代码
    替换你当前使用hashpass的验证逻辑,改用checkpw:

    import bcrypt
    from flask import request
    
    # 从数据库获取存储的哈希密码(注意:如果存的是字符串,需先转成bytes)
    stored_hashed_pw = user.password_hash.encode('utf-8')
    # 用户输入的密码转成bytes
    input_pw = request.form.get('password').encode('utf-8')
    
    # 执行验证
    if bcrypt.checkpw(input_pw, stored_hashed_pw):
        # 验证通过逻辑
        return "登录成功"
    else:
        # 验证失败逻辑
        return "密码错误"
    

    哈希密码的正确写法(用于用户注册时):

    import bcrypt
    
    user_password = "用户输入的密码".encode('utf-8')
    # 生成盐值
    salt = bcrypt.gensalt()
    # 生成哈希密码
    hashed_pw = bcrypt.hashpw(user_password, salt)
    # 将hashed_pw存入数据库(可直接存bytes,或转成字符串存储:hashed_pw.decode('utf-8'))
    
  • 确保安装正确版本的bcrypt
    卸载旧版本后安装最新稳定版:

    pip uninstall bcrypt -y
    pip install bcrypt>=4.0.0
    

    注意:如果使用虚拟环境,务必在激活虚拟环境后执行上述命令,避免全局包冲突。

  • 排查命名冲突
    检查你的Flask项目目录下是否存在名为bcrypt.py的文件,这会导致Python导入时优先加载本地文件而非官方库,需立即重命名该文件。同时确认导入语句是import bcrypt,而非错误的子模块导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 06:55:24