Чтобы выйти из системы пользователя во фляге с помощью Flask-login, я просто вызываю logout_user(), но после добавления некоторых дополнительных проверок с помощью сеанса, после того, как я нажимаю выход и снова возвращаюсь на «страницу входа», я все еще вошел в систему. Это происходит только когда я выбираю "вспомнить меня"
Я думаю, что неправильно понимаю концепцию сеанса и logout_user() здесь, может ли кто-нибудь прояснить и помочь?
На мой взгляд, я думаю, что когда я очищаю сеанс, все внутри, включая «user_id», «username» и т. д., также будет очищено. Но каким-то образом поле «user_id» или «имя пользователя» все еще существует. Я думаю, что это то, что вызывает проблему.
Мой код ниже:
Выход из системы:
@mod.route('/logout/')
@login_required
def logout():
logout_user()
session.clear()
return redirect(url_for('users.login'))
Часть входа:
@mod.route('/login/', methods=['GET', 'POST'])
def login():
if g.user is not None and g.user.is_authenticated():
return redirect(url_for('users.home'))
form = LoginForm(request.form)
if form.validate_on_submit():
user = User.query.filter_by(email=form.email.data).first()
if user and check_password_hash(user.password, form.password.data):
session['user_id'] = user.id
session['username'] = user.nickname
session['remember_me'] = form.remember_me.data
remember_me = False
if 'remember_me' in session:
remember_me = session['remember_me']
session.pop('remember_me', None)
login_user(user, remember_me)
return redirect(url_for('users.home'))
return render_template("users/login.html", form=form)