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