数据权限控制实践
最近在实习中为公司项目完成一个文件数据权限校验代码的转换重构,写这篇博客来记录前后两种权限校验的实现方案与相关概念
原实现方案:RBAC-基于角色的访问控制
RBAC(Role-Based Access Control)
RBAC 是一种常见的访问控制模型,它通过角色来分配权限。在 RBAC 模型中,角色是一组权限的集合,用户通过被分配角色来获得相应的权限。RBAC 的主要特点包括:
- 角色分配:用户被分配一个或多个角色,每个角色包含一组权限。
- 集中管理:权限管理更加集中和简化,因为只需要管理角色和权限的关系,而不是每个用户的权限。
- 易于审计:由于权限是通过角色间接分配给用户的,因此更容易跟踪和审计权限的使用情况。
具体实现
- 先固定化一张权限表permission记录有哪些权限
- 再通过permission_func,permission_data两张表分别记录操作权限和数据权限
- 每个租户下有多个角色,由表role来记录,
- 每个角色拥有不同的权限,于是通过pression_func,pression_data记录roleid和权限 id的集合
- 此时通过三张权限表已经可以明确什么角色有什么权限
- 进入实际业务场景,角色查看流程包权限拥有个人,部门,全部可见三种权限范围
- 每次查表需要取出角色的该权限设置,依据不同级别做不同处理:
- 如