flask用户密码 使用hash加密验证问题

新手上路,请多包涵

使用werkzeug.security做用户密码的加密和验证,其中有一个方法

@password.setter
    def password(self, password):
        self.password_hash = generate_password_hash(password)

我理解是在为user.password赋值时会调用该方法def password(self, password)
于是我这样使用:

user = User.query.get(data.get('reset'))
user.password_hash = 'password'

但是并没有调用方法def password(self, password),请问是为什么?

阅读 3.1k
2 个回答
✓ 已被采纳新手上路,请多包涵

是这样,
应该使用user.password = 'password'
@Yujiaao 感谢。

@property、@x.setter、@x.deleter实现了同名x属性的读取、赋值和删除。
三个装饰器装饰同名方法x,可以搭配使用。

设置的属性应是password 而非password_hash,直接设置后者是不会调用相关hash的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题