Skip to content

数据权限

数据权限

介绍

设置角色的数据权限范围,分为5种权限

  • 仅本人数据权限
  • 本部门及以下数据权限
  • 本部门数据权限
  • 指定部门数据权限
  • 全部数据权限

与功能权限(基于RBAC实现)的区别:

  • 功能权限:控制 “能做什么”(如新增、删除按钮的显示和执行)
  • 数据权限:控制 “能看到什么数据”(如销售经理只能查看自己团队的数据)

实现原理

数据权限实现原理:通过重写视图集的get_queryset()方法,对数据进行基于【用户】过滤,对数据进行基于【部门】过滤,最后返回过滤后的数据。

实现代码

文件mysite\mars_framework\viewsets\base.py中的CustomGenericViewSet

  • 定义属性data_permissions:指定哪个字段用于基于【用户】过滤,哪个字段用于基于【部门】过滤。如果为空,表示不启用数据权限,不会对数据进行过滤。

image-20250623144640124

  • 重写get_queryset()方法:获取data_permissions指定的过滤字段,获取用户角色的数据权限,然后基于【用户】过滤数据,再基于【部门】过滤数据,最后返回过滤后的结果。

image-20250623145042368

TIP

  • 数据权限针对具体的视图集生效,可以针对某一个功能视图集进行开启或关闭
  • CustomModelViewSet等自定义视图集的data_permissions属性默认为空,表示数据权限默认关闭