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

Класс OAuth2PasswordRequestForm

Класс OAuth2PasswordRequestForm применяется в качестве зависимости в маршруте FastAPI. Он извлекает данные из тела POST-запроса с типом содержимого application/x-www-form-urlencoded и представляет их в виде объекта с атрибутами username, password, scope, client_id, client_secret и grant_type. Первым параметром конструктора передаётся объект запроса, который FastAPI подставляет автоматически при объявлении зависимости. Обычно этот класс используют в эндпоинте, выдающем токен доступа, вместе с OAuth2PasswordBearer.

Синтаксис

OAuth2PasswordRequestForm( request, grant_type=None, username=None, password=None, scope="", client_id=None, client_secret=None )

Атрибуты

Объект формы хранит следующие атрибуты:

  • username - имя пользователя
  • password - пароль пользователя
  • scope - строка с перечнем запрашиваемых областей доступа
  • client_id - идентификатор клиента
  • client_secret - секрет клиента
  • grant_type - тип предоставления доступа

Пример

Давайте объявим форму как зависимость в маршруте и вернём имя пользователя:

from fastapi import FastAPI, Depends from fastapi.security import OAuth2PasswordRequestForm app = FastAPI() @app.post('/token') def login(form_data: OAuth2PasswordRequestForm = Depends()): return {'username': form_data.username}

Результат выполнения кода для формы с полем username равным 'user':

{"username": "user"}

Пример

Давайте вместе с формой используем OAuth2PasswordBearer и вернём токен доступа:

<+python+> from fastapi import FastAPI, Depends from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm app = FastAPI() oauth2_scheme = OAuth2PasswordBearer(tokenUrl='token') @app.post('/token') def login(form_data: OAuth2PasswordRequestForm = Depends()): return { 'access_token': form_data.username + '_token', 'token_type': 'bearer' } <-python+>

Результат выполнения кода для формы с полем username равным 'user':

<+python+> {"access_token": "user_token", "token_type": "bearer"} <-python+>

Пример

Давайте прочитаем атрибут scope и разберём его в список областей доступа:

<+python+> from fastapi import FastAPI, Depends from fastapi.security import OAuth2PasswordRequestForm app = FastAPI() @app.post('/token') def login(form_data: OAuth2PasswordRequestForm = Depends()): scopes = form_data.scope.split() return {'scopes': scopes} <-python+>

Результат выполнения кода для формы с полем scope равным 'read write':

<+python+> {"scopes": ["read", "write"]} <-python+>

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

  • класс OAuth2PasswordBearer,
    который извлекает токен из заголовка Authorization
  • атрибут username,
    который хранит имя пользователя из формы
  • атрибут password,
    который хранит пароль пользователя из формы
  • атрибут scope,
    который хранит строку с областями доступа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить