Класс HTTPBasic
Класс HTTPBasic применяется как зависимость
в параметрах маршрута FastAPI и отвечает за
базовую HTTP-аутентификацию.
Он читает заголовок Authorization типа Basic,
декодирует пару логин-пароль из Base64
и возвращает объект HTTPBasicCredentials.
Первым параметром передаётся scheme_name -
имя схемы для документации,
вторым - realm - область аутентификации,
третьим - auto_error -
флаг автоматической ошибки 401.
Синтаксис
HTTPBasic(scheme_name='HTTPBasic', realm=None, auto_error=True)
Пример
Давайте создадим зависимость на основе 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('/article')
def article(credentials: HTTPBasicCredentials = Depends(security)):
if credentials.username != 'user' or credentials.password != 'abcde':
raise HTTPException(status_code=401, detail='Incorrect credentials')
return {'text': 'hello'}
Результат выполнения кода при верных учётных данных:
{"text": "hello"}
Смотрите также
-
класс
HTTPBasicCredentials,
который хранит логин и пароль пользователя -
класс
HTTPBearer,
который извлекает Bearer-токен из заголовка -
класс
OAuth2PasswordBearer,
который реализует OAuth2-аутентификацию по паролю -
функция
Depends,
которая внедряет зависимость в маршрут