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

Класс OAuth2AuthorizationCodeBearer

Класс OAuth2AuthorizationCodeBearer применяется для защиты маршрутов с помощью OAuth2-потока Authorization Code. Он извлекает access-токен из заголовка Authorization (схема Bearer) и передаёт его в функцию-обработчик как строку. Первым параметром передаётся authorizationUrl - URL страницы авторизации, вторым - tokenUrl - URL для обмена кода на токен. Необязательный параметр refreshUrl задаёт URL обновления токена, scopes - словарь доступных областей, scheme_name - имя схемы в документации, auto_error - флаг автоматической ошибки 401.

Синтаксис

from fastapi.security import OAuth2AuthorizationCodeBearer oauth2_scheme = OAuth2AuthorizationCodeBearer( authorizationUrl='abcde', tokenUrl='abcde', refreshUrl=None, scopes=None, scheme_name=None, auto_error=True, )

Пример

Давайте создадим зависимость безопасности и защитим с её помощью маршрут:

from fastapi import FastAPI, Depends from fastapi.security import OAuth2AuthorizationCodeBearer app = FastAPI() oauth2_scheme = OAuth2AuthorizationCodeBearer( authorizationUrl='https://example.com/oauth/authorize', tokenUrl='https://example.com/oauth/token', ) @app.get('/user') def user(token: str = Depends(oauth2_scheme)): return {'token': token}

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

{"token": "abcde"}

Пример

Давайте добавим области доступа scopes и защитим маршрут через Security:

from fastapi import FastAPI, Security from fastapi.security import OAuth2AuthorizationCodeBearer app = FastAPI() oauth2_scheme = OAuth2AuthorizationCodeBearer( authorizationUrl='https://example.com/oauth/authorize', tokenUrl='https://example.com/oauth/token', scopes={'read': 'read access', 'write': 'write access'}, ) @app.get('/article') def article(token: str = Security(oauth2_scheme, scopes=['read'])): return {'token': token}

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

{"token": "abcde"}

Пример

Давайте отключим автоматическую ошибку через параметр auto_error и обработаем отсутствие токена вручную:

<+python+> from fastapi import FastAPI, Depends from fastapi.security import OAuth2AuthorizationCodeBearer app = FastAPI() oauth2_scheme = OAuth2AuthorizationCodeBearer( authorizationUrl='https://example.com/oauth/authorize', tokenUrl='https://example.com/oauth/token', auto_error=False, ) @app.get('/user') def user(token: str = Depends(oauth2_scheme)): if token is None: return {'token': 'guest'} return {'token': token} <-python+>

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

{"token": "guest"}

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

  • класс OAuth2PasswordBearer,
    который реализует схему OAuth2 Password Bearer
  • функция Security,
    которая добавляет области доступа к зависимости
  • функция Depends,
    которая внедряет зависимость безопасности в маршрут
  • класс OAuth2,
    который описывает базовую схему OAuth2
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить