本文介绍了flask-bcrypt - ValueError:盐无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 我正在用Flask和flask-Bcrypt完成一个简单的用户登录。但是,当试图用我的数据库中存储的用户登录时,我不断收到此错误 $ $ p $ ValueError:无效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) $ b $ 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():$ b $ user = User.query.filter(User.name == form.username.data).first()如果用户和bcrypt.check_password_hash(user.password,form.password.data): flash(您刚刚登录!) login_user(用户)返回重定向(url_for (home)) else: flash(bad username or password) return render_template(login.html,form = form) forms.py class LoginForm (Form): username = StringField('username',validators = [DataRequired()]) password = PasswordField('password',validators = [DataRequired()]) 解决方案基本上你想在hash之前编码你的数据:password.encode(' UTF-8' )。如果它是unicode,它可能会引发错误。 也看看这里: https://github.com/maxcountryman/flask -bcrypt / issues / 9 I was finishing up a simple user login with Flask and flask-Bcrypt. However, when trying to login with a user that is stored in my database, I keep getting this errorValueError: Invalid saltmodels.pyclass 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)forms.pyclass LoginForm(Form): username = StringField('username', validators=[DataRequired()]) password = PasswordField('password', validators=[DataRequired()]) 解决方案 Basically you would like to encode your data before the hash: password.encode('utf-8'). If it comes as unicode it may raise errors.Have a look here also: https://github.com/maxcountryman/flask-bcrypt/issues/9 这篇关于flask-bcrypt - ValueError:盐无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-26 03:40
查看更多