当前位置: 首页 > 面试题库 >

flask-bcrypt-ValueError:无效的盐

崔绍辉
2023-03-14
问题内容

我正在用Flask和flask-Bcrypt完成一个简单的用户登录。但是,当尝试使用存储在数据库中的用户登录时,我一直收到此错误

ValueError: Invalid salt

models.py

class User(db.Model):

    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)
    email = db.Column(db.String, nullable=False)
    password = db.Column(db.String, nullable=False)
    posts = db.relationship("Post", backref="author", lazy="dynamic")

    def __init__(self, name, email, password):
        self.name = name
        self.email = email
        self.password = bcrypt.generate_password_hash(password)

    def __repr__(self):
        return '<User {}>'.format(self.name)

views.py

@app.route("/login", methods=["GET", "POST"])
def login():
    form = LoginForm()
    if form.validate_on_submit():
        user = User.query.filter(User.name == form.username.data).first()
        if user and bcrypt.check_password_hash(user.password, form.password.data):
            flash("you were just logged in!")
            login_user(user)
            return redirect(url_for("home"))
        else:
            flash("bad username or password")
    return render_template("login.html", form=form)

表格

class LoginForm(Form):
    username = StringField('username', validators=[DataRequired()])
    password = PasswordField('password', validators=[DataRequired()])

问题答案:

基本上,您希望对哈希之前的数据进行编码:password.encode(’utf-8’)。如果它是unicode,则可能会引发错误。也可以在这里看看:https : //github.com/maxcountryman/flask-
bcrypt/issues/9



 类似资料:
  • 问题内容: 我正在用Flask和flask-Bcrypt完成一个简单的用户登录。但是,当尝试使用存储在数据库中的用户登录时,我一直收到此错误 models.py views.py 表格 问题答案: 我的问题类似于@tomClark所描述的 我将Postgres用作DDBB,而他的驱动程序或DDBB系统始终对已编码的string进行编码。第二个编码过程将创建一个无效的哈希,如下所示: 正确的哈希看起

  • 问题内容: 我越来越: 检查所有内容后,我无法得知出现此错误的原因,这似乎很好。 有人可以帮我找出错误吗? 问题答案: 实际上并不 需要的参数。你必须驱动直接调用,如果你想使用的颜色简单的序列(但要注意,有更好的选择,下面列出)。 如果你决定使用直接,再考虑到它的参数,那么只需要无论是 单一 有效的颜色值 ,那么或者,或 序列 这样的颜色值(在对文件的调用它 数组一样 )。一个 列表 的名称将工作

  • 问题内容: 我有一个读取温度数据的脚本: 有时,脚本在将值转换为float的行上失败: get_temp 数据中的文件“ ./projector.py”,第129行[ch] = float(temp) ValueError:float()的无效文字:+ 135.057E + 0 + 078.260E + 0 +00029 但这不是无效的文字。如果我将其输入任何python shell中, 那么它会

  • 问题内容: 我尝试创建一个简单的flask 应用程序: 但是当我添加调试时: 我收到以下错误: ValueError:信号仅在主线程中有效 这里是完整的堆栈跟踪 问题答案: 您面临的问题与替换命令的Flask-SocketIO软件包中的错误有关。因此,即使您不导入Flask- SocketIO,也始终使用它。有几种解决方案: 卸载Flask-SocketIO 不使用但运行程序的主文件 禁用调试 如

  • 问题内容: 我正在创建一个读取文件的程序,如果文件的第一行不为空白,它将读取接下来的四行。在这些行上执行计算,然后读取下一行。如果该行不为空,则继续。但是,我收到此错误: 它正在读取第一行,但无法将其转换为整数。 我该怎么做才能解决此问题? 代码: 问题答案: 仅作记录: 我在这里…

  • 问题内容: 如何在Flask中创建一个新的干净会话并使当前会话无效? 我使用还是? 问题答案: 我使用这种方法尽可能解决了这个问题*: 覆盖,从覆盖版本复制代码,而不是调用它。 当覆盖版本的,使其在分钟后传递一个参数。这会导致超过30分钟的Cookie无效。 经常使更新的覆盖版本成为会话变量,以确保cookie及其时间得到定期重写。(我将这个会话变量命名为并在其中存储当前时间,然后仅在自上次存储的

  • 给定一个有符号的32位整数x,返回其数字颠倒的x。如果反转x导致值超出有符号32位整数范围[-2**31, 2**31 - 1],则返回0。 假设环境不允许存储64位整数(有符号或无符号)。 这是我的意见书 int()方法应该允许我传递一个字符串值(“12”),但是它返回一个错误,说它是int()的无效文本。 第3行中的变量sp是str而不是float,所以我不知道为什么它不在leetcode提交

  • Bcrypt 是一个跨平台的文件加密工具。