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