Метод unauthorized_handler
Метод unauthorized_handler применяется к объекту
LoginManager и принимает в качестве параметра
функцию-обработчик. Эта функция будет вызвана вместо
стандартного перенаправления на страницу входа, когда
неавторизованный пользователь обращается к представлению,
защищённому декоратором login_required. Обработчик
должен вернуть ответ, который будет отправлен клиенту.
Синтаксис
@login_manager.unauthorized_handler
def unauthorized():
# code
Пример
Давайте создадим простое приложение с защищённым маршрутом и собственным обработчиком для неавторизованных пользователей:
from flask import Flask, redirect, url_for
from flask_login import LoginManager, login_required
app = Flask(__name__)
app.secret_key = 'abcde'
login_manager = LoginManager()
login_manager.init_app(app)
@login_manager.unauthorized_handler
def unauthorized():
return redirect(url_for('login'))
@app.route('/')
def index():
return 'hello'
@app.route('/login')
def login():
return 'login page'
@app.route('/profile')
@login_required
def profile():
return 'profile page'
При обращении неавторизованного пользователя к адресу
/profile сработает обработчик unauthorized
и произойдёт перенаправление на страницу входа.
Пример
Давайте вернём собственное сообщение вместо перенаправления:
from flask import Flask
from flask_login import LoginManager, login_required
app = Flask(__name__)
app.secret_key = 'abcde'
login_manager = LoginManager()
login_manager.init_app(app)
@login_manager.unauthorized_handler
def unauthorized():
return 'access denied'
@app.route('/')
def index():
return 'hello'
@app.route('/profile')
@login_required
def profile():
return 'profile page'
Результат выполнения кода для адреса /profile:
"access denied"
Смотрите также
-
класс
LoginManager,
который управляет аутентификацией в приложении -
метод
login_required,
который защищает представления от неавторизованных пользователей -
атрибут
login_view,
который задаёт имя представления для входа -
атрибут
login_message,
который задаёт сообщение для неавторизованных пользователей