TypeError:哈希必须是unicode或字节,而不是flask_sqlalchemy.BaseQuery


def login():
if request.method=='POST':
username=request.form['username']
password_candidate=request.form['password']
l_result=db.session.query(users).filter(users.username == username).all()
if len(l_result) > 0:
user=db.session.query(users.password).filter(users.username == username)
if sha256_crypt.verify(password_candidate,user):
app.logger.info('PASSWORD MATCHED')
else:
app.logger.info('PASSWORD MISMATCH')
else:
app.logger.info('NO USER')
return render_template('login.html')

我想验证weather password_candidate和用户的密码是否匹配。。但未能验证。。问题出在哪里?

`sha256_crypt.verify`接受明文密码和密码哈希作为参数。

问题中的代码传递的是sqlalchemy查询,而不是散列密码。

user=db.session.query(users.password).filter(users.username == username)
if sha256_crypt.verify(password_candidate, user):

您可能想要传递User实例的加密密码属性(确切名称取决于您的用户模型(:

user = db.session.query(users.password).filter(users.username == username).one()
if sha256_crypt.verify(password_candidate, user.encrypted_password):

最新更新