gpt4 book ai didi

python - Flask bcrypt.check_password_hash() 总是返回 False,无法缩小我的错误范围

转载 作者:行者123 更新时间:2023-12-01 09:18:44 24 4
gpt4 key购买 nike

在尝试在 Flask 中编写登录功能时,我想尝试“bcrypt”flask extensio。当我使用_bcrypt.check_password_hash()_方法将用户表单输入密码与用户在数据库中保存的密码进行比较时,它总是返回 false。

这是我用来生成密码的代码:

    hashPwd = bcrypt.generate_password_hash('form.password.data')

这是我用来检查候选密码与已保存密码的代码:

if form.validate_on_submit():
user = User.query.filter_by(username=form.username.data).first()

if user and bcrypt.check_password_hash(user.password, form.password.data):
login_user(user, remember=form.rememberMe.data)

如果我在 python shell 中执行User.query.get(1).password,密码的格式为:

u'$2b$12$JOXUftWBbn/egABOkAYNwezGKfh6GzIHOofUnvx73AiSOfoNWEGFC'

当我在代码中运行相同的查询时,密码是:

$2b$12$JOXUftWBbn/egABOkAYNwezGKfh6GzIHOofUnvx73AiSOfoNWEGFC

第一个密码中的 u' 是唯一的区别,这可能是问题的原因,但我不知道它是什么。

有什么想法吗?

最佳答案

来自http://flask-bcrypt.readthedocs.io/en/latest/

pw_hash = bcrypt.generate_password_hash('hunter2')
bcrypt.check_password_hash(pw_hash, 'hunter2') # returns True

在您的情况下,反向函数需要根据密码检查哈希值user.password 实际上应该是 hashPwd

if user and bcrypt.check_password_hash(hashPwd, form.password.data):

关于python - Flask bcrypt.check_password_hash() 总是返回 False,无法缩小我的错误范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50991261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com