Python Flask Bcrypt密码哈希不’;t匹配,如何解决?

Python Flask Bcrypt密码哈希不’;t匹配,如何解决?,python,python-3.x,flask,flask-sqlalchemy,bcrypt,Python,Python 3.x,Flask,Flask Sqlalchemy,Bcrypt,我正在尝试使用Flask制作一个简单的web应用程序。我试着用sqlite运行它。而且它工作得很好。唯一的问题是,当我尝试在共享托管服务器上托管应用程序时,以MySQL作为数据库,我遇到了一些密码匹配问题。当我查找问题时,我发现blackbcrypt密码哈希不匹配。我也不知道如何修复它。代码如下: from flask_bcrypt import Bcrypt app.config["SECRET_KEY"] = "super-secret-key" c

我正在尝试使用Flask制作一个简单的web应用程序。我试着用sqlite运行它。而且它工作得很好。唯一的问题是,当我尝试在共享托管服务器上托管应用程序时,以MySQL作为数据库,我遇到了一些密码匹配问题。当我查找问题时,我发现blackbcrypt密码哈希不匹配。我也不知道如何修复它。代码如下:

from flask_bcrypt import Bcrypt

app.config["SECRET_KEY"] = "super-secret-key"
cryptor = Bcrypt(app)
散列和存储在数据库中: 注意:在存储到数据库之前,我尝试使用终端和解释器匹配密码。它是匹配的,但一旦存储并拉回来就不匹配了。
password = cryptor.generate_password_hash(request.form.get("password")).decode("utf-8")

user_obj = Users(password=password)
db.session.add(user_obj)
db.session.commit()
匹配: Sqlalchemy模型: 尝试更改此选项:

class Users(db.model):
    password = db.Column(db.String(50), nullable=False)
为此:

class Users(db.model):
    password = db.Column(db.String(X), nullable=False)
(X=哈希密码的长度)

当您指定50时,您告诉数据库为50个字符保留一个空间,这将在存储密码时切断大部分散列密码。增加保留的空间将允许您验证哈希。指

Sqlite没有任何问题的原因是指定字符串的最大长度是可选的。(PostgreSQL也是如此)

class Users(db.model):
    password = db.Column(db.String(50), nullable=False)
class Users(db.model):
    password = db.Column(db.String(X), nullable=False)