РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
417 of 643 menu

Метод request_loader

Метод request_loader применяется к объекту LoginManager и регистрирует функцию-загрузчик пользователя из запроса. В отличие от user_loader, который работает с сессией, данный метод получает сам объект request. Это удобно для аутентификации по токену в заголовке или по API-ключу в параметрах. Функция должна вернуть объект пользователя либо None, если пользователь не найден.

Синтаксис

@login_manager.request_loader def load_user_from_request(request): # return user or None

Пример

Давайте загрузим пользователя из заголовка Authorization. Создадим приложение Flask и зарегистрируем загрузчик:

from flask import Flask, request from flask_login import LoginManager, UserMixin app = Flask(__name__) app.secret_key = 'secret' login_manager = LoginManager() login_manager.init_app(app) class User(UserMixin): def __init__(self, id): self.id = id @login_manager.request_loader def load_user_from_request(request): token = request.headers.get('Authorization') if token == 'abcde': return User('1') return None

Теперь при запросе с заголовком Authorization: abcde пользователь будет считаться аутентифицированным.

Пример

Давайте проверим загрузчик в обработчике маршрута:

from flask import Flask, request from flask_login import LoginManager, UserMixin, current_user app = Flask(__name__) app.secret_key = 'secret' login_manager = LoginManager() login_manager.init_app(app) class User(UserMixin): def __init__(self, id): self.id = id @login_manager.request_loader def load_user_from_request(request): token = request.headers.get('Authorization') if token == 'abcde': return User('1') return None @app.route('/') def index(): if current_user.is_authenticated: return 'hello ' + current_user.id return 'hello guest'

Результат выполнения кода для запроса с заголовком Authorization: abcde:

hello 1

Пример

Давайте загрузим пользователя из параметра запроса token:

from flask import Flask, request from flask_login import LoginManager, UserMixin app = Flask(__name__) app.secret_key = 'secret' login_manager = LoginManager() login_manager.init_app(app) class User(UserMixin): def __init__(self, id): self.id = id @login_manager.request_loader def load_user_from_request(request): token = request.args.get('token') if token == 'abcde': return User('user') return None

Смотрите также

  • метод user_loader,
    который загружает пользователя из сессии
  • класс LoginManager,
    который управляет аутентификацией
  • функция login_user,
    которая выполняет вход пользователя
  • метод init_app,
    который привязывает LoginManager к приложению
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить