Параметр scopes
Параметр scopes применяется в функциях безопасности
FastAPI, таких как Security и Depends,
для указания списка областей доступа OAuth2.
Он представляет собой список строк, каждая из которых
описывает отдельное разрешение, например 'items:read'
или 'users:write'. При вызове защищённого маршрута
FastAPI проверяет, что токен пользователя содержит все
запрошенные области доступа.
Синтаксис
Security(dependency, scopes=['scope1', 'scope2'])
Пример
Давайте создадим приложение с OAuth2-схемой
и защитим маршрут, требующий область доступа 'items:read':
from fastapi import FastAPI, Security
from fastapi.security import OAuth2PasswordBearer
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(
tokenUrl='token',
scopes={'items:read': 'Read items'}
)
@app.get('/items/')
def read_items(
token: str = Security(oauth2_scheme, scopes=['items:read'])
):
return {'token': token}
При запросе к маршруту /items/ FastAPI проверит,
что токен содержит область доступа 'items:read'.
Если области нет, вернётся ошибка 403.
Пример
Давайте запросим сразу несколько областей доступа для одного маршрута:
from fastapi import FastAPI, Security
from fastapi.security import OAuth2PasswordBearer
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(
tokenUrl='token',
scopes={
'items:read': 'Read items',
'items:write': 'Write items'
}
)
@app.post('/items/')
def create_item(
token: str = Security(
oauth2_scheme,
scopes=['items:read', 'items:write']
)
):
return {'token': token}
Пользователь должен обладать обеими областями доступа, чтобы получить доступ к маршруту.
Смотрите также
-
функция
Security,
которая применяет зависимости безопасности с областями доступа -
класс
OAuth2PasswordBearer,
который реализует OAuth2-аутентификацию по паролю -
параметр
scope,
который задаёт одну область доступа -
класс
SecurityScopes,
который хранит список требуемых областей доступа