Класс OAuth2
Класс OAuth2 применяется для описания OAuth2-потока
в приложении FastAPI. Он является базовым классом для схем
OAuth2PasswordBearer и OAuth2AuthorizationCodeBearer.
Первым параметром передаётся flows - объект с описанием
доступных OAuth2-потоков. Вторым необязательным параметром
передаётся scheme_name - имя схемы в OpenAPI.
Третьим необязательным параметром передаётся description -
текстовое описание схемы.
Синтаксис
from fastapi.security import OAuth2
OAuth2(flows, scheme_name=None, description=None, auto_error=True)
Пример
Давайте создадим схему OAuth2 с парольным потоком
и повесим её на маршрут через Depends:
from fastapi import FastAPI, Depends
from fastapi.security import OAuth2, OAuth2PasswordBearer
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl='token')
@app.get('/user')
def user(token: str = Depends(oauth2_scheme)):
return {'token': token}
Результат выполнения кода для адреса /user с заголовком
Authorization: Bearer abcde:
{"token": "abcde"}
Пример
Давайте создадим схему OAuth2 напрямую
с несколькими потоками и передадим её в зависимость:
from fastapi import FastAPI, Depends
from fastapi.security import OAuth2
from fastapi.openapi.models import OAuthFlows, OAuthFlowPassword
app = FastAPI()
flows = OAuthFlows(
password=OAuthFlowPassword(tokenUrl='token')
)
oauth2_scheme = OAuth2(flows=flows, scheme_name='MyOAuth2')
@app.get('/user')
def user(credentials: str = Depends(oauth2_scheme)):
return {'credentials': credentials}
Результат выполнения кода для адреса /user:
{"credentials": "abcde"}
Смотрите также
-
класс
OAuth2PasswordBearer,
который реализует парольный OAuth2-поток -
класс
OAuth2AuthorizationCodeBearer,
который реализует поток authorization code -
класс
OAuth2PasswordRequestForm,
который принимает форму логина и пароля -
функция
Depends,
которая внедряет зависимость в обработчик