Метод __call__
Метод __call__ применяется к экземпляру класса
OAuth2PasswordBearer
и делает его вызываемым как зависимость.
При вызове метод принимает объект Request,
извлекает из заголовка Authorization схему и токен,
проверяет корректность схемы Bearer
и возвращает строку с токеном.
Если заголовок отсутствует или схема неверна,
метод выбрасывает исключение HTTPException
с кодом 401, если атрибут auto_error равен True.
Синтаксис
oauth2_scheme(request)
Пример
Давайте создадим экземпляр OAuth2PasswordBearer
и используем его как зависимость в маршруте:
from fastapi import FastAPI, Depends
from fastapi.security import OAuth2PasswordBearer
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl='token')
@app.get('/items/')
def read_items(token: str = Depends(oauth2_scheme)):
return {'token': token}
Результат выполнения кода при передаче заголовка
Authorization: Bearer abcde:
{"token": "abcde"}
Пример
Давайте вручную вызовем метод __call__
через экземпляр oauth2_scheme,
передав объект Request:
Результат выполнения кода при передаче заголовка
Authorization: Bearer abcde:
{"token": "abcde"}
Пример
Давайте обработаем ситуацию, когда заголовок Authorization
отсутствует. Метод выбросит исключение HTTPException:
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import OAuth2PasswordBearer
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl='token')
@app.get('/items/')
def read_items(token: str = Depends(oauth2_scheme)):
return {'token': token}
Результат выполнения кода без заголовка Authorization:
{"detail": "Not authenticated"}
Смотрите также
-
класс
OAuth2PasswordBearer,
который создаёт схему OAuth2 с паролем и Bearer-токеном -
функция
Depends,
которая внедряет зависимость в обработчик маршрута -
функция
Security,
которая внедряет зависимость с поддержкой областей доступа -
атрибут
tokenUrl,
который задаёт URL для получения токена