Python Flask学习使用Werkzeug(实例)
# models.py from werkzeug.security import generate_password_hash,check_password_hash class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True)#id列 username = db.Column(db.String(64), unique=True, index=True) #username列 role_id = db.Column(db.Integer, db.ForeignKey('roles.id')) #role_id列 password_hash = db.Column(db.String(128)) #密码hash列 @property def password(self): #访问password属性 raise AttributeError('password is not a readable attribute') @password.setter def password(self,password): #设置password属性 self.password_hash = generate_password_hash(password) #默认加‘盐’了 def verify_password(self,password):#验证密码 return check_password_hash(self.password_hash,password) def __repr__(self): return '' % self.username
使用Werkzeug实现密码散列,最关键的是使用其中security模块的generater_password_hash()和check_password_hash()。
method指定哈希变化的算法,默认sha1,salt_length指定‘盐的长度’,默认是8位。password是必须指定的。
返回计算得出的128位哈希值
hash是密码散列值(一般存于数据库),password是输入需比较的密码。
返回的是True或者False