RBAC
约 385 字大约 1 分钟
我们通过自定义依赖组件,实现了 RBAC 的轻松集成,它可以通过 FastAPI Depends 轻松集成
警告
自 fba v1.2.0 版本起,开始将【角色菜单】作为默认 RBAC 鉴权,Casbin 作为外置插件进行分发
角色菜单
要想实现此 RBAC 鉴权,需要进行以下配置
添加接口依赖
只有在接口中添加以下依赖时,才能自动调用此鉴权方式
@router.post( '', summary='xxx', dependencies=[ Depends(RequestPermission('sys:api:add')), # 通常为 xxx:xxx:xxx DependsRBAC, ], )
在系统菜单中添加权限标识
我们在接口依赖中可以看到
sys:api:add
之类的值,这些值正是对应着菜单中的权限标识,只有它们完全一致,并且用户拥有对应的菜单时,才可以获得相应的操作权限
Casbin
此方案是 Go 语言中比较流行的解决方案,它非常灵活,可以通过模型定义多种控制规则
要想实现此 RBAC 鉴权,请先 获取插件,然后执行以下操作
安装插件
启用鉴权
修改
backend/core/conf.py
文件中的RBAC_ROLE_MENU_MODE
为False
解耦
在实际项目开发中,不可能同时存在多种 RBAC 解决方案,您可以通过以下方式删除【角色菜单】集成
- 删除
backend/common/security/permission.py
文件中的RequestPermission
类及所有类调用 - 删除
backend/core/conf.py
文件中的RBAC_ROLE_MENU_MODE
和RBAC_ROLE_MENU_EXCLUDE
- 删除
backend/common/security/rbac.py
文件中rbac_verify
方法里面的if settings.RBAC_ROLE_MENU_MODE:
条件及相关代码