mirror of
https://github.com/fastapi-practices/fastapi-best-architecture.git
synced 2026-09-21 21:15:13 +00:00
Update request state usage to context variable (#853)
* Update request state usage to context variable * Update context to custom ctx * Fix the exception interception in opera log * restore elapsed
This commit is contained in:
@@ -3,6 +3,7 @@ from sqlalchemy import ColumnElement, and_, or_
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from backend.app.admin.crud.crud_data_scope import data_scope_dao
|
||||
from backend.common.context import ctx
|
||||
from backend.common.enums import RoleDataRuleExpressionType, RoleDataRuleOperatorType
|
||||
from backend.common.exception import errors
|
||||
from backend.core.conf import settings
|
||||
@@ -38,7 +39,7 @@ class RequestPermission:
|
||||
if not isinstance(self.value, str):
|
||||
raise errors.ServerError
|
||||
# 附加权限标识到请求状态
|
||||
request.state.permission = self.value
|
||||
ctx.permission = self.value
|
||||
|
||||
|
||||
async def filter_data_permission(db: AsyncSession, request: Request) -> ColumnElement[bool]: # noqa: C901
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from fastapi import Depends, Request
|
||||
|
||||
from backend.common.context import ctx
|
||||
from backend.common.enums import MethodType, StatusType
|
||||
from backend.common.exception import errors
|
||||
from backend.common.log import log
|
||||
@@ -49,7 +50,7 @@ async def rbac_verify(request: Request, _token: str = DependsJwtAuth) -> None:
|
||||
|
||||
# RBAC 鉴权
|
||||
if settings.RBAC_ROLE_MENU_MODE:
|
||||
path_auth_perm = getattr(request.state, 'permission', None)
|
||||
path_auth_perm = ctx.permission
|
||||
|
||||
# 没有菜单操作权限标识不校验
|
||||
if not path_auth_perm:
|
||||
|
||||
Reference in New Issue
Block a user