Атрибут scheme
Атрибут scheme принадлежит классу HTTPAuthorizationCredentials
и доступен через зависимость HTTPBearer.
Он содержит строку с названием схемы авторизации,
которую клиент указал в заголовке Authorization.
Например, для заголовка Authorization: Bearer abcde
атрибут scheme вернёт строку 'Bearer'.
Чаще всего используется для проверки,
что клиент применил именно ожидаемую схему.
Синтаксис
credentials.scheme
Пример
Давайте извлечём схему из заголовка и вернём её клиенту:
from fastapi import FastAPI, Depends
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
app = FastAPI()
security = HTTPBearer()
@app.get('/')
def index(credentials: HTTPAuthorizationCredentials = Depends(security)):
return {'scheme': credentials.scheme}
Результат выполнения кода для заголовка
Authorization: Bearer abcde:
{"scheme": "Bearer"}
Пример
Давайте проверим, что клиент применил схему 'Bearer',
и вернём ошибку при другом значении:
<+python+>
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials
app = FastAPI()
security = HTTPBearer()
@app.get('/user')
def user(credentials: HTTPAuthorizationCredentials = Depends(security)):
if credentials.scheme != 'Bearer':
raise HTTPException(status_code=401, detail='Invalid scheme')
return {'scheme': credentials.scheme, 'token': credentials.credentials}
<-python+>
Результат выполнения кода для заголовка
Authorization: Bearer abcde:
{"scheme": "Bearer", "token": "abcde"}
Смотрите также
-
класс
HTTPAuthorizationCredentials,
который хранит данные из заголовка Authorization -
атрибут
credentials,
который хранит токен из заголовка Authorization -
класс
HTTPBearer,
который извлекает заголовок Authorization со схемой Bearer -
функция
Depends,
которая внедряет зависимость с данными авторизации