Декоратор login_required
Декоратор login_required применяется к функциям-обработчикам
Flask и проверяет, вошёл ли пользователь в систему. Если
пользователь аутентифицирован, обработчик выполняется как обычно.
В противном случае Flask-Login вызывает представление входа,
заданное атрибутом login_view, и передаёт в него параметр
next с исходным адресом. Декоратор не принимает
аргументов и работает совместно с объектом LoginManager.
Синтаксис
@login_required
Пример
Давайте защитим обработчик главной страницы с помощью
декоратора login_required:
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_manager.login_view = 'login'
@app.route('/')
@login_required
def index():
return 'hello'
@app.route('/login')
def login():
return 'login page'
Если пользователь не аутентифицирован, при обращении к адресу
/ произойдёт перенаправление на адрес /login.
Если пользователь вошёл в систему, результатом выполнения кода
будет строка:
hello
Пример
Давайте защитим несколько обработчиков и покажем использование
параметра next при перенаправлении:
from flask import Flask, request
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('/')
@login_required
def index():
return 'hello'
@app.route('/user')
@login_required
def user():
return 'user page'
@app.route('/login')
def login():
return request.args.get('next', 'no next')
При обращении неаутентифицированного пользователя к адресу
/user произойдёт перенаправление на адрес
/login?next=%2Fuser, и результатом выполнения кода
будет строка:
/user
Смотрите также
-
класс
LoginManager,
который управляет процессом аутентификации -
атрибут
login_view,
который задаёт представление для входа в систему -
функция
login_user,
которая выполняет вход пользователя -
декоратор
fresh_login_required,
который требует свежей аутентификации