日期:2014-05-17  浏览次数:20579 次

关于数据权限问题,高手请入
业务是这样的:同一个角色的不同用户访问同一个菜单(比如订单查询)的查询范围不同。
比如人员A能看部门1,部门2,二级单位1的数据;人员B能看部门C和二级单位2的数据,这些范围是在后台给用户配置的。
目前关于权限的表有用户,角色,用户角色,组织机构,菜单,权限。我加入了一个关联表:字段有用户id,组织机构id,菜单id。但领导说不行,要求权限表和关联表不能加入菜单id,这样不好扩展,因为后期有可能还有个业务:不同的人点击按钮(比如导出EXCEL)后查询的数据也有不同,这个按钮不跟菜单关联。领导要求加入权限表(不用原来的权限表)和关联表。页面实现的方式为选择一个用户,再指定某个权限,再给此用户的指定权限配置组织机构。但我没想明白这个权限表应该有哪些字段?中间表如何设计才能不用菜单id的情况下与菜单关联,满足上述业务?
感激不尽。



------解决方案--------------------
下面是我的看法


------解决方案--------------------
1、库的设计:建立权限表(权限决定菜单,页面上有的菜单全放入权限中,且包含组织机构)、用户表、角色表、角色权限表、用户角色表 

2、页面的设计:在页面菜单上的权限管理中包括用户管理(用户的增、删、改、查)与角色管理(角色的增、删、改、查). 

在系统开始使用时,肯定要用一个默认的系统用户在页面进行配置(也就是在库中存在一个用户,用户具有“超级管理员”角色,这个角色包含这个系统中的所有权限)。 

系统在初始化时权限表中包含你的所有的要控制用户显示的项的一个对应值。 

首先,先创建你想要的角色,在页面上可以用JS脚本生成一棵树,这棵树的每一个节点就是通过树节点的复选框可以为当前新增的角色选择你想设定的权限,这样你新建一个角色保存时,就会将这个角色的信息存入角色表中,同时将角色与所选的权限(选的权限包括菜单项和能操作的机构)的关系放入角色权限表中。 

其次,在用户管理项中,新建一个用户,为这个用户选择一个之前建立的角色,这样就可以将其保存到用户表中,同时将用户与角色的关系放到用户角色表中。 
“比如人员A能看部门1,部门2,二级单位1的数据;人员B能看部门C和二级单位2的数据”
这种情况你也就可以从前台通过超级管理员用户进行管理配置了

3、逻辑设计:当一个用户登陆时,校验用户的身份的时候,若是该用户存在,可以将这个用户所具有的权限查出来(通过用户与角色、角色与权限的对应关系来处理),放入session中(不要怕往session中入东西,不会太多),这样当用户登陆以后,点击每一个可以判断session中有没有这个点击所对应的权限,若是没有就提示“没有权限”,也可以通过直接对用户所具有的权限,在页面的层次上就将功能屏敝,也就是说用户没有的权限,在页面上根本就不显示。而对于不同用户由于之前我们已经给他分配他所能看到的部门,并且一样在登录的时候放入了session中,所以我们点击一个按钮进行查询的时候可以从session中得到,并设置为查询的过滤条件,从而实现了不同的用户点击同一按钮但是查出的数据不同

以上仅供参考~