Атрибут client_id
Атрибут client_id применяется к экземпляру класса OAuth2PasswordRequestForm.
Он содержит строку с публичным идентификатором клиента,
который передаётся в теле POST-запроса на эндпоинт получения токена.
Этот атрибут используется в потоках OAuth2,
где клиентское приложение должно представиться серверу авторизации.
Значение по умолчанию - пустая строка.
Синтаксис
form.client_id
Пример
Давайте создадим эндпоинт для получения токена,
который принимает форму с полями username, password и client_id:
from fastapi import FastAPI, Depends
from fastapi.security import OAuth2PasswordRequestForm
app = FastAPI()
@app.post('/token')
def login(form: OAuth2PasswordRequestForm = Depends()):
return {
'username': form.username,
'client_id': form.client_id
}
Результат выполнения кода при отправке формы с полями username=user,
password=secret и client_id=abcde:
{"username": "user", "client_id": "abcde"}
Пример
Давайте проверим, что будет,
если поле client_id не передано в запросе:
from fastapi import FastAPI, Depends
from fastapi.security import OAuth2PasswordRequestForm
app = FastAPI()
@app.post('/token')
def login(form: OAuth2PasswordRequestForm = Depends()):
return {
'client_id': form.client_id,
'is_empty': form.client_id == ''
}
Результат выполнения кода при отправке формы
без поля client_id:
{"client_id": "", "is_empty": true}
Пример
Давайте используем атрибут client_id
для условной выдачи токена только известным клиентам:
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import OAuth2PasswordRequestForm
app = FastAPI()
ALLOWED_CLIENTS = ['abcde', 'article', 'user']
@app.post('/token')
def login(form: OAuth2PasswordRequestForm = Depends()):
if form.client_id not in ALLOWED_CLIENTS:
raise HTTPException(
status_code=400,
detail='Unknown client'
)
return {'access_token': 'token_for_' + form.client_id}
Результат выполнения кода при передаче client_id=abcde:
{"access_token": "token_for_abcde"}
Результат выполнения кода при передаче client_id=unknown:
{"detail": "Unknown client"}
Смотрите также
-
класс
OAuth2PasswordRequestForm,
который описывает форму запроса для получения токена -
атрибут
username,
который хранит имя пользователя из формы -
атрибут
password,
который хранит пароль пользователя из формы -
атрибут
client_secret,
который хранит секрет клиента из формы