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

Атрибут tokenUrl

Атрибут tokenUrl класса OAuth2PasswordBearer хранит строку с адресом эндпоинта, относительно которого клиент получает токен доступа по схеме OAuth2 Password Flow. Значение задаётся первым параметром при создании экземпляра класса и автоматически попадает в OpenAPI-схему в раздел securitySchemes. Через этот адрес документация Swagger UI показывает кнопку Authorize и отправляет учётные данные пользователя для обмена на access token.

Синтаксис

OAuth2PasswordBearer(tokenUrl)

Пример

Давайте создадим экземпляр OAuth2PasswordBearer и выведем значение атрибута tokenUrl:

from fastapi import FastAPI from fastapi.security import OAuth2PasswordBearer app = FastAPI() oauth2_scheme = OAuth2PasswordBearer(tokenUrl='token') @app.get('/token-url') def get_token_url(): return {'tokenUrl': oauth2_scheme.tokenUrl}

Результат выполнения кода для адреса /token-url:

{"tokenUrl": "token"}

Пример

Давайте укажем полный URL-адрес эндпоинта выдачи токена и защитим маршрут с помощью зависимости:

<+python+> from fastapi import FastAPI, Depends from fastapi.security import OAuth2PasswordBearer app = FastAPI() oauth2_scheme = OAuth2PasswordBearer( tokenUrl='/api/v1/auth/token' ) @app.post('/api/v1/auth/token') def login(): return {'access_token': 'abcde', 'token_type': 'bearer'} @app.get('/users/me') def read_current_user(token: str = Depends(oauth2_scheme)): return {'token': token} <-python+>

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

{"token": "abcde"}

Пример

Давайте посмотрим, как значение tokenUrl попадает в OpenAPI-схему приложения:

<+python+> from fastapi import FastAPI from fastapi.security import OAuth2PasswordBearer app = FastAPI() oauth2_scheme = OAuth2PasswordBearer(tokenUrl='auth/token') @app.get('/openapi-token-url') def openapi_token_url(): schema = app.openapi() flow = schema['components']['securitySchemes']['OAuth2PasswordBearer'] return {'tokenUrl': flow['flows']['password']['tokenUrl']} <-python+>

Результат выполнения кода для адреса /openapi-token-url:

{"tokenUrl": "auth/token"}

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

  • класс OAuth2PasswordBearer,
    который реализует OAuth2 Password Flow в FastAPI
  • метод call,
    который извлекает токен из заголовка Authorization
  • атрибут scheme_name,
    который задаёт имя схемы безопасности в OpenAPI
  • класс OAuth2PasswordRequestForm,
    который принимает логин и пароль на эндпоинте токена
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить