【问题标题】:ValueError: Invalid salt in flaskValueError:烧瓶中的盐无效
【发布时间】:2021-06-18 15:22:45
【问题描述】:

我仍处于学习阶段,在学习教程时遇到了这个问题 我不明白为什么会收到此错误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 中 return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args) 文件“C:\Users\Aparichit\Desktop\NoViewsIndia\noViews\views.py”,第 46 行,在 login_page 如果尝试用户和 bcrypt.check_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 行,在 hashw 中 raise ValueError("无效盐")

我的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

【问题讨论】:

    标签: flask bcrypt flask-login


    【解决方案1】:

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

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

    read the docs

    【讨论】:

    • setter property里面module.py,我已经应用了。我需要在其他地方做吗? @password.setter def password(self, plain_text_password): self.password_hash = bcrypt.generate_password_hash(plain_text_password).decode('utf-8')
    • 尝试删除所有密码并重新输入一次,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2019-09-12
    • 2022-11-24
    • 1970-01-01
    • 2015-10-09
    相关资源
    最近更新 更多