Атрибут needs_refresh_message
Атрибут needs_refresh_message применяется к объекту
LoginManager и хранит строку с текстом сообщения,
которое будет показано пользователю, когда тот попытается
получить доступ к ресурсу, защищённому декоратором
fresh_login_required, но его сессия уже не является
свежей. По умолчанию атрибут содержит строку
'Please log in again to access this page.'.
Значение атрибута передаётся в обработчик, зарегистрированный
через метод needs_refresh_handler.
Синтаксис
login_manager.needs_refresh_message = 'message'
Пример
Давайте зададим собственное сообщение и зарегистрируем обработчик, который его показывает:
from flask import Flask, redirect, url_for, request
from flask_login import LoginManager, UserMixin, login_user, fresh_login_required
app = Flask(__name__)
app.secret_key = 'secret'
login_manager = LoginManager(app)
login_manager.needs_refresh_message = 'Please confirm your identity again.'
class User(UserMixin):
def __init__(self, id):
self.id = id
@login_manager.user_loader
def load_user(user_id):
return User(user_id)
@login_manager.needs_refresh_handler
def needs_refresh():
return login_manager.needs_refresh_message
@app.route('/login')
def login():
login_user(User('1'))
return 'logged in'
@app.route('/protected')
@fresh_login_required
def protected():
return 'secret page'
При обращении к адресу /protected с несвежей сессией
пользователь увидит результат:
Please confirm your identity again.
Пример
Давайте изменим текст сообщения на более дружелюбный:
from flask import Flask
from flask_login import LoginManager
app = Flask(__name__)
app.secret_key = 'secret'
login_manager = LoginManager(app)
login_manager.needs_refresh_message = 'Your session has expired. Please log in again.'
print(login_manager.needs_refresh_message)
Результат выполнения кода:
"Your session has expired. Please log in again."
Смотрите также
-
класс
LoginManager,
который управляет аутентификацией в приложении -
атрибут
login_message,
который задаёт текст сообщения при входе -
метод
needs_refresh_handler,
который регистрирует обработчик несвежей сессии -
функцию
fresh_login_required,
которая требует свежую сессию для доступа