Атрибут username
Атрибут username принадлежит классу OAuth2PasswordRequestForm
из модуля fastapi.security. Класс применяется
как зависимость (через Depends) в эндпоинте выдачи токена.
FastAPI автоматически разбирает тело POST-запроса
с типом application/x-www-form-urlencoded
и заполняет поля формы. Атрибут username хранит
строку с именем пользователя, которую клиент прислал в поле username.
Значение используется для поиска пользователя в базе данных
и последующей проверки пароля.
Синтаксис
form_data.username
Доступ к атрибуту выполняется через объект формы,
который FastAPI внедряет в функцию-обработчик.
Тип значения - str.
Пример
Давайте создадим эндпоинт выдачи токена и выведем имя пользователя из формы:
from fastapi import FastAPI, Depends
from fastapi.security import OAuth2PasswordRequestForm
app = FastAPI()
@app.post('/token')
def login(form_data: OAuth2PasswordRequestForm = Depends()):
return {'username': form_data.username}
Отправим POST-запрос с полями формы:
curl -X POST http://127.0.0.1:8000/token \
-d "username=user&password=abcde"
Результат выполнения кода:
{"username": "user"}
Пример
Давайте проверим пользователя по имени из атрибута username
и вернём токен только для известного имени:
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import OAuth2PasswordRequestForm
app = FastAPI()
users = {'user': 'abcde', 'article': 'hello'}
@app.post('/token')
def login(form_data: OAuth2PasswordRequestForm = Depends()):
password = users.get(form_data.username)
if password is None:
raise HTTPException(status_code=400, detail='Incorrect username')
return {'access_token': password, 'token_type': 'bearer'}
Отправим POST-запрос с корректным именем:
curl -X POST http://127.0.0.1:8000/token \
-d "username=user&password=abcde"
Результат выполнения кода:
{"access_token": "abcde", "token_type": "bearer"}
Смотрите также
-
класс
OAuth2PasswordRequestForm,
который описывает форму запроса пароля OAuth2 -
атрибут
password,
который хранит пароль из формы авторизации -
класс
OAuth2PasswordBearer,
который извлекает токен из заголовка Authorization -
функция
Depends,
которая внедряет зависимости в обработчик