Метод needs_refresh_handler
Метод needs_refresh_handler применяется к объекту
LoginManager и регистрирует функцию,
которая будет вызвана, когда Flask-Login
обнаружит, что сессия пользователя устарела
и требует повторной аутентификации. Это
происходит при включённой защите сессии
session_protection со значением
'strong' или 'basic'. Первым
параметром метод принимает функцию-обработчик,
вторым необязательным параметром - флаг
refresh. Если флаг равен True,
обработчик будет вызван не только при
необходимости обновления, но и при каждом
запросе. По умолчанию refresh равен
False.
Синтаксис
login_manager.needs_refresh_handler(func, [refresh])
Пример
Давайте зарегистрируем простой обработчик, который возвращает сообщение о необходимости обновления сессии:
from flask import Flask
from flask_login import LoginManager
app = Flask(__name__)
app.secret_key = 'secret'
login_manager = LoginManager(app)
@login_manager.needs_refresh_handler
def needs_refresh():
return 'Session needs refresh'
Результат выполнения кода при срабатывании обработчика:
Пример
Давайте включим защиту сессии и зададим обработчик, который перенаправляет пользователя на страницу входа:
from flask import Flask, redirect, url_for
from flask_login import LoginManager
app = Flask(__name__)
app.secret_key = 'secret'
login_manager = LoginManager(app)
login_manager.session_protection = 'strong'
@login_manager.needs_refresh_handler
def needs_refresh():
return redirect(url_for('login'))
@app.route('/login')
def login():
return 'Login page'
Результат выполнения кода при срабатывании
обработчика - перенаправление на адрес
/login:
Пример
Давайте передадим параметр refresh
равным True, чтобы обработчик
вызывался при каждом запросе:
from flask import Flask
from flask_login import LoginManager
app = Flask(__name__)
app.secret_key = 'secret'
login_manager = LoginManager(app)
@login_manager.needs_refresh_handler(refresh=True)
def needs_refresh():
return 'Check session every request'
Результат выполнения кода при каждом запросе:
Смотрите также
-
класс
LoginManager,
который управляет аутентификацией -
атрибут
session_protection,
который задаёт режим защиты сессии -
метод
unauthorized_handler,
который обрабатывает неавторизованный доступ -
метод
user_loader,
который загружает пользователя по идентификатору