Werkzeug.security log_in(user) возвращает ошибку 404Python

Программы на Python
Anonymous
Werkzeug.security log_in(user) возвращает ошибку 404

Сообщение Anonymous »

Когда я пытаюсь войти в систему и использовать check_password_hash() безопасности Werkzeug, я получаю недействительную ссылку перенаправления 404. После добавления предложения try и кроме оно перенаправляется в мое исключение:

Объект 'tuple' не имеет атрибута 'is_active'

Код: Выделить всё

if check_password_hash(stored_hash, request.form.get('password')):
print('logging in')
login_user(row)
return redirect(url_for('home',email=user_email,name=user_email))
else:
return render_template('error.html')
except Exception as e:
print(e)
return render_template('invalid_details.html')
Когда я удаляю login_user, перенаправление работает и перенаправляет на «домой», но мой пользователь не вошел в систему:

Код: Выделить всё

if check_password_hash(stored_hash, request.form.get('password')):
print('logging in')
#login_user(row)
return redirect(url_for('home',email=user_email,name=user_email))
else:
return render_template('error.html')
except Exception as e:
print(e)
return render_template('invalid_details.html')

Код: Выделить всё

log_user()
взят из Flask:

Код: Выделить всё

def login_user(user: object,
remember: bool = False,
duration: timedelta = None,
force: bool = False,
fresh: bool = True) -> bool
Выполняет вход пользователя. Вы должны передать ему реальный объект пользователя. Если свойство is_active пользователя имеет значение False, он не войдет в систему, если параметр Force не равен True.

Это вернет True, если попытка входа в систему успешна, и False, если она не удалась (т. е. потому что пользователь неактивен).

Параметры:

user — объект пользователя для входа в систему.

remember — нужно ли запоминать пользователя после истечения срока его сеанса. По умолчанию установлено значение False.

длительность – количество времени, по истечении которого истечет срок действия файла cookie для запоминания. Если None, используется значение, заданное в настройках. По умолчанию — «Нет».

force — если пользователь неактивен, установка значения «Истина» приведет к его входу в систему в любом случае. По умолчанию установлено значение False.

fresh — установка значения False приведет к входу пользователя с сеансом, помеченным как не «свежий». По умолчанию установлено значение True.

Я попробовал несколько решений. Первое сообщение о том, что в строку, которую я определил из базы данных, невозможно войти, поэтому я создал новый класс User_obj и создал объект с этим классом, используя адрес электронной почты и пароль, переданные из моей формы входа, но это все равно не работает:

Код: Выделить всё

class User_obj:
def __init__(self,id,email):
self.id = id
self.email = email

def is_authenticated(self):
return True

def is_active(self):
return True

def is_anonymous(self):
return False

def get_id(self):
return str(self.id)
Я хочу войти в систему своего пользователя, записанного в базе данных, и перенаправить его на домашнюю страницу, где в качестве входных данных используется его адрес электронной почты.

Вернуться в «Python»