Атрибут login_view
Атрибут login_view применяется к объекту
LoginManager и хранит строку с именем
функции-обработчика. Когда неавторизованный
пользователь обращается к маршруту, защищённому
декоратором login_required, Flask-Login
перенаправляет его на этот обработчик.
По умолчанию значение атрибута равно None,
то есть перенаправление отключено и вместо него
возвращается ошибка 401.
Имя функции задаётся строкой, поскольку на момент
настройки LoginManager сама функция может
быть ещё не определена. Flask-Login разрешает
имя через url_for в момент запроса, поэтому
обработчик должен существовать к этому времени.
Синтаксис
login_manager.login_view = 'имя_функции'
Пример
Давайте настроим перенаправление на страницу входа.
Сначала создадим приложение и объект LoginManager:
from flask import Flask, redirect, url_for
from flask_login import LoginManager, login_required
app = Flask(__name__)
app.secret_key = 'secret'
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'
@app.route('/')
def index():
return 'hello'
@app.route('/login')
def login():
return 'login page'
@app.route('/admin')
@login_required
def admin():
return 'admin page'
Теперь при обращении неавторизованного пользователя
к адресу /admin произойдёт перенаправление
на обработчик login, и в браузере отобразится:
login page
Пример
Атрибут login_view можно задать и через
функцию login_manager.init_app в словаре
параметров. Это удобно, когда настройки хранятся
в конфигурации приложения:
from flask import Flask
from flask_login import LoginManager, login_required
app = Flask(__name__)
app.secret_key = 'secret'
login_manager = LoginManager()
login_manager.init_app(app, login_view='login')
@app.route('/')
def index():
return 'hello'
@app.route('/login')
def login():
return 'login page'
@app.route('/admin')
@login_required
def admin():
return 'admin page'
Результат работы будет таким же, как и в предыдущем примере: неавторизованный пользователь попадёт на страницу входа.
Смотрите также
-
класс
LoginManager,
который управляет аутентификацией в приложении -
метод
init_app,
который привязывает менеджер к приложению Flask -
функцию
login_required,
которая защищает маршрут от неавторизованных пользователей -
атрибут
login_message,
который задаёт сообщение при перенаправлении на форму входа