這一功能的實(shí)現(xiàn)只需要兩個(gè)函數(shù)泣刹,分別用在注冊用戶和驗(yàn)證用戶階段篷就。
- generate_password_hash(password, method= pbkdf2:sha1 , salt_length=8) :這個(gè)函數(shù)將原始密碼作為輸入询刹,以字符串形式輸出密碼的散列值烘跺,輸出的值可保存在用戶數(shù)據(jù)庫中
- check_password_hash(hash, password) :這個(gè)函數(shù)的參數(shù)是從數(shù)據(jù)庫中取回的密碼散列值和用戶輸入的密碼進(jìn)行比對。返回值為 True 表明密碼正確。
Sample:
from werkzeug.security import generate_password_hash, check_password_hash
class User(UserMixin, db.Model):
__tablename__ = 'users'
#...
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(64), unique=True, index=True)
username = db.Column(db.String(64), unique=True, index=True)
password_hash = db.Column(db.String(128))
@property
def password(self):
raise AttributeError('password is not a readable attribute')
@password.setter
def password(self, password):
self.password_hash = generate_password_hash(password)
def verify_password(self, password):
return check_password_hash(self.password_hash, password)