Я пытаюсь создать простое веб-приложение, используя Flask. И я попытался запустить его с помощью sqlite. И работает отлично. Единственная проблема заключается в том, что когда я пытался разместить приложение на сервере общего хостинга с MySQL в качестве базы данных, я столкнулся с некоторыми проблемами сопоставления паролей. Когда я посмотрел на проблему, я увидел, что хэши паролей flask -bcrypt не совпадают. И я не знаю, как это исправить. Вот код:
from flask_bcrypt import Bcrypt
app.config["SECRET_KEY"] = "super-secret-key"
cryptor = Bcrypt(app)
Хеширование и сохранение в базе данных:
Примечание: Я пытался сопоставить пароли с помощью терминала и интерпретатора перед сохранением в базе данных. И это совпало, но после того, как оно было сохранено и извлечено, оно не совпадает.
password = cryptor.generate_password_hash(request.form.get("password")).decode("utf-8")
user_obj = Users(password=password)
db.session.add(user_obj)
db.session.commit()
Соответствие:
data = Users.query.filter_by(email=form.username.data).first()
if cryptor.check_password_hash(data.password, form.password.data):
#pass the login check
else:
#dont pass
Модель Sqlalchemy:
class Users(db.model):
password = db.Column(db.String(50), nullable=False)