【发布时间】:2019-11-29 17:47:49
【问题描述】:
当我们用Flask-Admin注册一个新用户时,它会自动生成一个密码哈希。
如何验证哈希..?
任何类似的方法,如 bycript 上的 check_password_hash,或来自 werkzeug.security..?
check_password_hash
我从 Flask-Security 尝试了这个 verify_password,但似乎不起作用。
这是我的代码的 sn-p:
config.py
SECURITY_PASSWORD_HASH = "pbkdf2_sha256"
SECURITY_PASSWORD_SALT = "ATGUOHAELKiubahiughaerGOJAEGj"
这是我的 models.py
from flask_security import UserMixin
from werkzeug.security import check_password_hash
class User(db.Model, UserMixin):
__tablename__ = 'user'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(120), index=True, unique=True)
password = db.Column(db.String(128))
def check_password(self, password):
# return verify_password(self.password, password) # from Flask-Security
# return verify_and_update_password(self.password, password) # from Flask-Security
return check_password(self.password, password) # from werkzeug.security
当我尝试验证用户首次注册时从 Flask-Admin 自动生成的密码哈希时,chek_password 没有一个工作,它总是像这样返回 False。
>>> u1=db.session.query(User).filter_by(email='zidanecr7kaka@gmail.com').first()
>>> u1.check_password('123456')
False
但是当我尝试像下面这样手动设置密码时:
def set_password(self, password):
# self.password = encrypt_password(password) # from Flask-Security
# self.password = hash_password(password) # from Flask-Security
self.password = generate_password_hash(password) # from werkzeug.security
返回真:
>>> u1=db.session.query(User).filter_by(email='zidanecr7kaka@gmail.com').first()
>>> u1.set_password('123456')
>>> u1.check_password('123456')
True
但是当我尝试从用户首次注册时从 Flask Admin 自动生成的密码哈希中 check_password 时,它总是返回 False 值:
所以我的问题的重点是,如何使用 Flask-Admin.. 验证密码哈希?
【问题讨论】:
标签: python flask hash flask-admin flask-security