Flask 安全更新密码不起作用

Flask Security updating password not working

我正在尝试使用 flask-Security 来更改密码。基本上,不会抛出任何错误,但我数据库中的哈希值不会更新。创建初始密码时,一切正常。

但是,当我尝试使用 update.py 中的代码进行更新时,密码没有更新。我很欣赏你的洞察力。谢谢。

update.py

buyer = Buyers.query.filter_by(id=buyer_id).first()
                    buyer.password = generate_password_hash(form.password.data)
                    db.session.commit()
                    flash('Password has been updated')

models.py

class Buyers(db.Model, UserMixin):
    __tablename__ = 'buyers'

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(64), unique=True, index=True, nullable=False)
    firstname = db.Column(db.String(64), index=True, nullable=False)
    lastname = db.Column(db.String(64), index=True, nullable=False)
    company = db.Column(db.Integer, db.ForeignKey('company.id'))
    password_hash = db.Column(db.String(128))

    def __init__(
        self, email, firstname, lastname, company, password
    ):
        self.email = email
        self.firstname = firstname
        self.lastname = lastname
        self.company = company
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

不完全确定您要完成什么 - 但代码片段中的用户模型带有字段 password_hash - 而不是密码。 Flask-Security 需要某些定义的模型名称才能工作。 不确定你从哪里得到 check_password_hash() 和 generate_password_hash()....

Flask-Security更新密码的方式是:

user.password = hash_password(password)
_datastore.put(user)
_datastore.commit()

哦 - 我假设你是 Flask-Security-Too(这是一个维护的叉子)......