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:
Wu Clan
2025-10-16 10:23:39 +08:00
committed by GitHub
parent dd08775c85
commit 6a065797f5
17 changed files with 135 additions and 91 deletions
+2 -1
View File
@@ -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
+2 -1
View File
@@ -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: