微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ValueError:烧瓶中的盐无效

如何解决ValueError:烧瓶中的盐无效

我仍处于学习阶段,在学习教程时遇到此问题 我不明白为什么我会收到此错误 ValueError: Invalid salt

完整的错误代码是:

文件“C:\Users\Aparichit\AppData\Local\Programs\Python\python39\Lib\site-packages\flask\app.py”, 第 1515 行,在 full_dispatch_request 中 rv = self.handle_user_exception(e) 文件“C:\Users\Aparichit\AppData\Local\Programs\Python\python39\Lib\site-packages\flask\app.py”, 第 1513 行,在 full_dispatch_request 中 rv = self.dispatch_request() 文件“C:\Users\Aparichit\AppData\Local\Programs\Python\python39\Lib\site-packages\flask\app.py”, 第 1499 行,在 dispatch_request 中 返回 self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args) 文件“C:\Users\Aparichit\Desktop\NoViewsIndia\noViews\views.py”,第 46 行,在 login_page 如果attempted_user 和bcrypt.check_password_hash(attempted_user.password_hash,尝试密码): 文件“C:\Users\Aparichit\AppData\Local\Programs\Python\python39\Lib\site-packages\flask_bcrypt.py”, 第 193 行,在 check_password_hash 中 return safe_str_cmp(bcrypt.hashpw(password,pw_hash),pw_hash) 文件“C:\Users\Aparichit\AppData\Local\Programs\Python\python39\Lib\site-packages\bcrypt_init_.py”, 第 105 行,在 hashpw 中 raise ValueError("Invalid salt")

我的 model.py 代码是:

class User(db.Model,UserMixin):
    name = db.Column(db.String(20),nullable=False)
    userName = db.Column(db.String(15),primary_key=True,nullable=False)
    password_hash = db.Column(db.String(20),nullable=False)

    @property
    def password(self):
        return self.password

    @password.setter
    def password(self,plain_text_password):
        self.password_hash = bcrypt.generate_password_hash(plain_text_password).decode('utf-8')

views.py

@app.route('/admin_login',methods=['GET','POST'])
def login_page():
    login_form =Login()
    if login_form.validate_on_submit():
        attempted_password = login_form.pWord.data
        attempted_user = User.query.filter_by(userName = login_form.uName.data).first()
        print(f'Route Username is {login_form.uName.data}')
        print(f'Route User is {attempted_user}')
        print(f' Route Password is {attempted_password}')
        print(f'Route Hashed Password is {attempted_user.password_hash}')
        if attempted_user and bcrypt.check_password_hash(attempted_user.password_hash,attempted_password):
            login_user(attempted_user)
            flash(f'You have successfully logged in,{attempted_user.name}')
        else:
            flash('Invalid Username and Password')
    return render_template('admin_login.html',loginForm=login_form)

form.py

class Login(FlaskForm):
    uName = StringField(label='User Name')
    pWord = PasswordField(label='Password')
    submit = SubmitField(label='Login')

以及保存的密码: Hassed Password

解决方法

您需要在存储数据之前对数据进行解码

pw_hash = bcrypt.generate_password_hash(‘hunter2’).decode(‘utf-8’) 

read the docs

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。