Skip to content

Commit bb33e99

Browse files
authored
Update casbin RBAC verify to dynamic import (#576)
1 parent 6c70b34 commit bb33e99

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

backend/common/security/rbac.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
from fastapi import Depends, Request
44

55
from backend.common.enums import MethodType, StatusType
6+
from backend.common.exception import errors
67
from backend.common.exception.errors import AuthorizationError, TokenError
8+
from backend.common.log import log
79
from backend.common.security.jwt import DependsJwtAuth
810
from backend.core.conf import settings
9-
from backend.plugin.casbin.utils.rbac import casbin_verify
11+
from backend.utils.import_parse import import_module_cached
1012

1113

1214
async def rbac_verify(request: Request, _token: str = DependsJwtAuth) -> None:
@@ -67,6 +69,13 @@ async def rbac_verify(request: Request, _token: str = DependsJwtAuth) -> None:
6769
if path_auth_perm not in allow_perms:
6870
raise AuthorizationError
6971
else:
72+
try:
73+
casbin_rbac = import_module_cached('backend.plugin.casbin.utils.rbac')
74+
casbin_verify = getattr(casbin_rbac, 'casbin_verify')
75+
except (ImportError, AttributeError) as e:
76+
log.error(f'正在通过 casbin 执行 RBAC 权限校验,但此插件不存在: {e}')
77+
raise errors.ServerError(msg='权限校验失败,请联系系统管理员')
78+
7079
await casbin_verify(request)
7180

7281

0 commit comments

Comments
 (0)