认证扩展
- flask-login:管理已登陆用户会话
- Werkzeug: 计算密码散列值并进行核对
- itsdanerous: 生成并核对加密安全令牌
密码安全性
想保证数据库中密码安全,使用密码的散列值来存储。
使用Werkzeug实现密码散列
- generate_password_hash(password, method=pbkdf2:sha1, salt_length=8): 将原始密码输入,输入散列值
- check_password_hash(hash, password): 返回True表明密码正确
app/model.py: 在User模型中加入密码散列
from werkzeug.security import generate_password_hash, check_password_hash
class User(db.model):
#...
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)