Python Flask中的密码散列函数,具有

Python Flask中的密码散列函数,具有,python,flask,passwords,rethinkdb,rethinkdb-python,Python,Flask,Passwords,Rethinkdb,Rethinkdb Python,我在使用RejectDB(使用)在flask中实现hash/check_hash函数时遇到问题。 我知道我编写的代码无法工作,但我不确定如何实现它,这样它才能工作。我应该在用户登录/注册时对密码进行散列/检查散列,还是有其他方法 from remodel.models import Model from passlib.hash import pbkdf2_sha256 from flask_login import UserMixin class User(UserMixin, Model)

我在使用RejectDB(使用)在flask中实现hash/check_hash函数时遇到问题。 我知道我编写的代码无法工作,但我不确定如何实现它,这样它才能工作。我应该在用户登录/注册时对密码进行散列/检查散列,还是有其他方法

from remodel.models import Model
from passlib.hash import pbkdf2_sha256
from flask_login import UserMixin

class User(UserMixin, Model):
    has_many = ('Post',)

    def set_password(self, password):
        self.password_hash = pbkdf2_sha256.hash(password)

    def check_password(self, password):
        return pbkdf2_sha256.verify(password, self.password_hash)

p、 s:我知道sha256不适合存储密码,但这个项目只是为了让我学会如何将RejectionDB与Flask一起使用

我不明白这个问题。第一个问题是,
set\u password
不会提交更改,但是“当用户登录/注册时,我是否应该对密码进行哈希/取消哈希”我不理解,而您不会取消哈希密码。这就是重点;这样做应该是不可能的。当用户尝试登录时,您获取该密码的哈希值,并将其与数据库中存储的哈希值进行比较。我知道,我使用了一个错误的术语,我的意思是“检查哈希”,当我调用User.create()时,它会编辑问题使其更具意义。它会重新建模创建对象并同时将其写入数据库。我无法在用户对象上调用函数,因为它不会保存任何更改。如果不提交更改,则会将任何内容保存到数据库中。第二句我一点也不懂