关于系统设计中数据权限的解决方案

2,984 阅读1分钟
我最近的开发一个项目中涉及比较复杂的权限管理功能。 系统中需要角色、机构、菜单、用户,其中机构有上下级关联,角色又分为经理、组长等,大致的需求是这样的不同角色看到的界面不一样,这个功能好处理设计菜单表与角色表多对多关联就可以了,而数据权限就比较复杂了,机构表中设有 部门A ,小组A,小组B(小组的上级是部门A),角色有部门经理,组长 ,组长A只能查看小组A的组员数据,而不能查看小组B的组员数据,部门经理A能查看底下两个小组数据

我设计的表如下

最开始我想的查询方案是 现在我的想法是如果是部门经理查看数据时 递归查询底下的机构列表,在查询人员时 用 in(机构id1,机构id2)的方式查询数据,但是这种方案存在问题,如果部门过多会导致查询缓慢所以又请教了一些朋友他们提出的方案是采用权限编码的方式解决,大致思路如下:

     比如顶级部门的编码为00,下级部门的编码为00-01,在下级的编码为00-01-01 等等以此类推在查询的时候用右like索引的方式进行数据查询,这样可以比较容易的解决数据权限的问题