Атрибут scope_str
Атрибут scope_str принадлежит классу SecurityScopes
из модуля fastapi.security. Он хранит строковое
представление всех требуемых scope, переданных в зависимость
через Security. Значение формируется автоматически
при создании экземпляра SecurityScopes и представляет
собой список scope, объединённых через запятую с пробелом.
Атрибут удобно использовать в сообщениях об ошибках доступа,
когда нужно показать клиенту, какие именно права требуются.
Синтаксис
security_scopes.scope_str
Пример
Давайте создадим зависимость, которая принимает объект
SecurityScopes и возвращает его атрибут
scope_str:
from fastapi import FastAPI, Security
from fastapi.security import SecurityScopes
app = FastAPI()
def get_scopes(security_scopes: SecurityScopes):
return {'scope_str': security_scopes.scope_str}
@app.get('/items')
def read_items(data: dict = Security(get_scopes, scopes=['items:read', 'items:write'])):
return data
Результат выполнения кода для адреса /items:
{"scope_str": "items:read items:write"}
Пример
Давайте используем атрибут scope_str в тексте
исключения, чтобы показать, какие права нужны пользователю:
from fastapi import FastAPI, Security, HTTPException
from fastapi.security import SecurityScopes
app = FastAPI()
def verify_scopes(security_scopes: SecurityScopes):
if security_scopes.scopes:
raise HTTPException(
status_code=403,
detail=f'Not enough permissions. Required: {security_scopes.scope_str}'
)
return {'access': 'granted'}
@app.get('/admin')
def read_admin(data: dict = Security(verify_scopes, scopes=['admin:read'])):
return data
Результат выполнения кода для адреса /admin:
Смотрите также
-
класс
SecurityScopes,
который хранит информацию о требуемых scope -
атрибут
scopes,
который содержит список требуемых scope -
функция
Security,
которая передаёт scope в зависимость -
параметр
scopes,
который задаёт список требуемых прав доступа