Я создаю веб-сайт для школьного проекта, который, помимо прочего, позволяет пользователям входить в систему. Данные пользователя хранятся в базе данных sqlite, включая хешированные пароли (от bcrypt). Сайт работает на Flask / Python.
Я успешно могу создавать учетные записи, используя веб-сайты, и пароли хешируются. Однако, когда я пытаюсь войти снова, код просто не работает - даже если я ввожу правильный пароль (поверьте, это не опечатка, я много пробовал)
bcrypt.check_password_hash (пароль_базы_данных, пароль)
возвращает False.
Я попытался изменить db_password и пароль, но я получаю сообщение об ошибке «недопустимая соль».
Код, в котором хэшируется пароль:
hashed_password = bcrypt.generate_password_hash(password1).decode('utf-8')
Код для входа в систему:
if not bcrypt.check_password_hash(db_password, password):
print("Incorrect password.")
return redirect('login/incorrect')
session['user_id'] = user_id
session['username'] = username
return redirect('/')
Этот код, если используется правильный пароль, возвращает редирект ('/'), но я продолжаю получать перенаправление возврата ('логин / неверный').
-
Edit:
Я удалил базу данных и создал новые учетные записи, чтобы убедиться, что пароль правильный. Работал пользователь с именем «1» и паролем «1». Пользователь с именем 't' с паролем 't' не работает. Пользователь с именем 'test' с паролем '0' также работает. Пароль '2.0' также работает, но я проверил - Python обрабатывает переменную password как строку, даже если это число.