Функция logout_user
Функция logout_user применяется для завершения сеанса
текущего пользователя. Она удаляет идентификатор
пользователя из сессии, а также очищает данные, связанные
с флагом remember и защитой сессии. Функция не
принимает параметров и возвращает True, если выход
прошёл успешно, или False, если активного
пользователя не было.
Обычно функция вызывается внутри обработчика маршрута,
например при переходе на адрес /logout. После
вызова пользователь считается анонимным, и все
последующие запросы обрабатываются как от
неавторизованного гостя.
Синтаксис
from flask_login import logout_user
logout_user()
Пример
Давайте создадим простое приложение Flask с аутентификацией и маршрутом для выхода пользователя:
from flask import Flask, redirect, url_for
from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required
app = Flask(__name__)
app.secret_key = 'abcde'
login_manager = LoginManager()
login_manager.init_app(app)
class User(UserMixin):
def __init__(self, id):
self.id = id
@login_manager.user_loader
def load_user(user_id):
return User(user_id)
@app.route('/login')
def login():
user = User('1')
login_user(user)
return 'logged in'
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('login'))
При переходе на адрес /logout пользователь
выходит из системы и перенаправляется на страницу
входа. Если пользователь не был авторизован, сработает
декоратор login_required и произойдёт
перенаправление на форму логина.
Пример
Давайте проверим, что после вызова logout_user
пользователь становится анонимным:
from flask import Flask
from flask_login import LoginManager, UserMixin, login_user, logout_user, current_user
app = Flask(__name__)
app.secret_key = 'abcde'
login_manager = LoginManager()
login_manager.init_app(app)
class User(UserMixin):
def __init__(self, id):
self.id = id
@login_manager.user_loader
def load_user(user_id):
return User(user_id)
@app.route('/check')
def check():
user = User('1')
login_user(user)
res = current_user.is_authenticated
logout_user()
res = current_user.is_authenticated
return str(res)
Результат выполнения кода после выхода:
False
Смотрите также
-
функцию
login_user,
которая выполняет вход пользователя -
функцию
login_required,
которая защищает маршрут от анонимных пользователей -
класс
LoginManager,
который управляет аутентификацией в приложении -
атрибут
anonymous_user,
который представляет неавторизованного пользователя