Вопрос раскрывает подходы к аутентификации и авторизации в FastAPI с использованием встроенных возможностей.
Аутентификация выполняется через OAuth2PasswordBearer, а авторизация через Security Scopes, определяющие доступ к ресурсам.
FastAPI предоставляет модуль безопасности для реализации аутентификации и авторизации. Для этого используется:
OAuth2PasswordBearer для получения токена, который передается в зависимости маршрутов.
Security Scopes для проверки прав доступа к ресурсам.
Пример кода:
from fastapi import Depends, FastAPI, HTTPException, Security
from fastapi.security import OAuth2PasswordBearer, SecurityScopes
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
def get_current_user(security_scopes: SecurityScopes, token: str = Depends(oauth2_scheme)):
# Логика проверки токена
raise HTTPException(status_code=403, detail="Not authenticated")
app = FastAPI()
@app.get("/items/", dependencies=[Depends(Security(get_current_user, scopes=["items:read"]))])
async def read_items():
return [{"item": "Foo", "value": "Bar"}]Когда использовать:
Для защиты маршрутов и проверки доступа к ресурсам.