Атрибут scope
Атрибут scope принадлежит классу OAuth2PasswordRequestForm.
Класс применяется как зависимость в обработчике, принимающем
данные формы OAuth2. Помимо username и password,
форма может содержать поле scope. После разбора формы
значение этого поля доступно через атрибут scope.
Атрибут хранит строку, в которой права доступа перечислены
через пробел, например 'items read'. Если клиент
не передал поле, атрибут содержит пустую строку.
Синтаксис
form.scope
Доступ к атрибуту выполняется через объект формы, который приходит в обработчик как зависимость.
Пример
Давайте объявим обработчик входа, который принимает форму и выводит запрошенные права доступа:
from fastapi import FastAPI, Depends
from fastapi.security import OAuth2PasswordRequestForm
app = FastAPI()
@app.post('/token')
def login(form: OAuth2PasswordRequestForm = Depends()):
return {
'username': form.username,
'scope': form.scope
}
Отправим форму с полем scope:
curl -X POST http://127.0.0.1:8000/token -d 'username=user&password=abcde&scope=items%20read'
Результат выполнения запроса:
{"username": "user", "scope": "items read"}
Пример
Давайте разберём строку прав доступа на отдельные элементы:
from fastapi import FastAPI, Depends
from fastapi.security import OAuth2PasswordRequestForm
app = FastAPI()
@app.post('/token')
def login(form: OAuth2PasswordRequestForm = Depends()):
scopes = form.scope.split()
return {
'username': form.username,
'scopes': scopes
}
Отправим форму с несколькими правами доступа:
curl -X POST http://127.0.0.1:8000/token -d 'username=user&password=abcde&scope=items%20read%20write'
Результат выполнения запроса:
Смотрите также
-
класс
OAuth2PasswordRequestForm,
который описывает форму запроса токена -
атрибут
username,
который хранит имя пользователя из формы -
атрибут
password,
который хранит пароль пользователя из формы -
параметр
scopes,
который задаёт список доступных прав доступа