Я все еще нахожусь на этапе обучения, и у меня возникла эта проблема при просмотре руководств. Я не понимаю, почему я получаю эту ошибку 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, на странице входа в систему, если попытка_пользователя и bcrypt.check_password_hash (попытка_пользователя.password_hash, попытка_пароля): Файл C: \ Users \ Aparichit \ AppData \ Local \ Programs \ Python \ Python39 \ Lib \ site- packages \ flask_bcrypt.py, строка 193, в check_password_hash вернуть safe_str_cmp (bcrypt.hashpw (пароль, pw_hash), pw_hash) Файл C: \ Users \ Aparichit \ AppData \ Local \ Programs \ Python \ Python39 \ Lib \ site-packages \ bcrypt_ <�эм > init _.py, строка 105, в hashpw поднять 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
Вам необходимо декодировать ваши данные перед сохранением данных
прочтите документы
В
setter property
внутриmodule.py
уже применил. Мне нужно делать это где-нибудь еще? @ password.setter def пароль (self, plain_text_password): self.password_hash = bcrypt.generate_password_hash (plain_text_password) .decode (‘utf-8’) — person Piyush Vikas; 19.06.2021попробуйте удалить все пароли и ввести новый один раз, — person Piyush Vikas; 19.06.2021