Appearance
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 dependencysystem.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。