flask-bcrypt - ValueError:盐无效 [英] flask-bcrypt - ValueError: Invalid salt
本文介绍了flask-bcrypt - ValueError:盐无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
$ $ 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()])
< code $ <$ $ p
解决方案基本上你想在hash之前编码你的数据:password.encode(' UTF-8' )。如果它是unicode,它可能会引发错误。
也看看这里: https://github.com/maxcountryman/flask -bcrypt / issues / 9I 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 error
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)
forms.py
class 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:盐无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文