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

Параметр scope

Параметр scope применяется в зависимостях безопасности FastAPI и задаёт область доступа, которую должен иметь OAuth2-токен для вызова защищённого маршрута. Передаётся строкой или списком строк в функцию Security либо Depends вместе с зависимостью OAuth2PasswordBearer или OAuth2AuthorizationCodeBearer. Если токен не содержит нужной области, FastAPI возвращает ошибку 403 Forbidden.

Синтаксис

Security(dependency, scopes=['scope1', 'scope2'])

Пример

Давайте объявим зависимость с областью доступа 'items' и защитим маршрут:

from fastapi import FastAPI, Depends, Security from fastapi.security import OAuth2PasswordBearer app = FastAPI() oauth2_scheme = OAuth2PasswordBearer( tokenUrl='token', scopes={'items': 'read items'} ) @app.get('/items/') def read_items( token: str = Security(oauth2_scheme, scopes=['items']) ): return {'token': token, 'scope': 'items'}

Результат выполнения кода при валидном токене с областью 'items':

{"token": "abcde", "scope": "items"}

Пример

Давайте передадим несколько областей доступа одним списком:

from fastapi import FastAPI, Security from fastapi.security import OAuth2PasswordBearer app = FastAPI() oauth2_scheme = OAuth2PasswordBearer( tokenUrl='token', scopes={ 'items': 'read items', 'users': 'read users' } ) @app.get('/admin/') def admin_panel( token: str = Security( oauth2_scheme, scopes=['items', 'users'] ) ): return {'token': token, 'access': 'granted'}

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

{"token": "abcde", "access": "granted"}

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

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