Класс HTTPBasicCredentials
Класс HTTPBasicCredentials применяется для представления
учётных данных, переданных клиентом в заголовке
Authorization по схеме Basic. FastAPI автоматически
разбирает такой заголовок, декодирует Base64 и создаёт
экземпляр этого класса. Класс имеет два обязательных атрибута:
username (имя пользователя) и password (пароль).
Обычно объект получают через зависимость с классом
HTTPBasic, после чего проверяют учётные данные
и возвращают пользователя или выбрасывают исключение
HTTPException.
Синтаксис
from fastapi.security import HTTPBasicCredentials
HTTPBasicCredentials(username, password)
Атрибуты
Класс содержит два атрибута, доступных только для чтения:
username - имя пользователя, извлечённое из заголовка.
password - пароль, извлечённый из заголовка.
Пример
Давайте получим объект HTTPBasicCredentials
через зависимость HTTPBasic и выведем имя пользователя:
from fastapi import FastAPI, Depends
from fastapi.security import HTTPBasic, HTTPBasicCredentials
app = FastAPI()
security = HTTPBasic()
@app.get('/user')
def user(credentials: HTTPBasicCredentials = Depends(security)):
return {'username': credentials.username}
Результат выполнения кода при верных учётных данных:
{"username": "abcde"}
Пример
Давайте проверим имя пользователя и пароль, и при неверных данных вернём ошибку 401:
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import HTTPBasic, HTTPBasicCredentials
app = FastAPI()
security = HTTPBasic()
@app.get('/user')
def user(credentials: HTTPBasicCredentials = Depends(security)):
if credentials.username != 'abcde' or credentials.password != 'hello':
raise HTTPException(
status_code=401,
detail='Incorrect username or password',
headers={'WWW-Authenticate': 'Basic'},
)
return {'username': credentials.username}
Результат выполнения кода при верных учётных данных:
{"username": "abcde"}
Результат выполнения кода при неверных учётных данных:
{"detail": "Incorrect username or password"}