Skip to content

Python 权限依赖

依赖链

text
HTTP Bearer Token
  → get_current_user_id(JWT 校验)
  → get_current_user(用户存在且未禁用)
  → require_permission("system:user:list")(细粒度 RBAC)

require_permission

app/api/deps.py

python
def require_permission(permission: str):
    def dependency(user: SysUser = Depends(get_current_user)) -> SysUser:
        if permission not in collect_permission_codes(user):
            raise HTTPException(status_code=403, detail="没有访问权限")
        return user
    return dependency

system.py 映射

与 Java @PreAuthorize 一一对应,例如:

python
@router.get("/users")
def list_users(_: SysUser = Depends(require_permission("system:user:list")), ...):

菜单过滤

AuthService._build_menu_tree(permissions) 与 Java filterMenuByPermission 规则相同。

权限来源

用户 → roles → permissions.code,使用角色 code 作为 authority。

相关文档

Xichen Full Stack 内部文档