定义一个commonDataservice层:获取用户所具有的所有部门ids
- 在commonDataService类中的getCurrUserDataDeptIds()方法,获取当前登录用户的部门数据ids列表
图片
- 如果当前登录用户id为超级管理员,则加载全部菜单信息,如下图所示:
图片
- 如果当前登录用户id不为超级管理员,通过用户id,获取sys_role_dpet,sys_user_role这两张表进行关联(「已拥有制定部门的权利且未占用」 ),获取该登录用户所属的部门id
数据权限
- 数据权限用户已经分配且已经拥有的部门(「已拥有制定部门的权利且已占用」 ),「作用是选择了一个一级部门,那么一级部门所包含的二级部门,三级部门等也要赋值给用户,也就是说拥有的部门下面还有子部门,那么也具有该部门以及子部门的拥有权,使用递归算法全部遍历获得。」 如下图所示
数据权限数据权限数据权限
- 将当前登录用户所拥有的部门id通过逗号进行拼接
数据权限
用户新增弹框中的部门列表的数据权限
同样调用的是SysDepartController中的depart/list的方法,逻辑见2.3节
数据权限数据权限
角色管理中新增弹框中的部门列表的数据权限
同样调用的是SysDepartController中的depart/list的方法,逻辑见2.3节
数据权限数据权限
操作案例
- 例如用户debug用户的角色为操作权限角色,分配部门为开发一部下面的测试部门
数据权限
- 使用超级管理员,给操作权限角色分配数据权限,这里选择新分配一个开发二部下面的测试部,如下图所示:
数据权限
- 使用debug用户登录查询
用户登录查询
关于数据范围权限的设计与实现,你有什么好的方案?欢迎留言评论!