欢迎来到天天文库
浏览记录
ID:33739560
大小:62.25 KB
页数:7页
时间:2019-02-28
《权限解决方案》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、权限控制解决方案角色与资源对应(资源包括URL、组件以及用于进行数据权限控制的资源等),一个角色可对应多个资源;另一方曲角色与用户、部门、公司对应,一个角色可以对应多个用户、部门或公司,同时对于放入角色当屮的用户、部门、公司可以设置这个角色成员在当而角色中的访问权限(允许还是拒绝访问),如果当前成员(用户、部门、公司)在当前角色中访问权限为允许访问,那么就可以访问当前角色对应的资源,否则就不能访问当前角色对应的资源,利用这种特性就町以很容易的实现权限的加减计算。角色可以与URL资源、数据权限控制资源对应,同时角色当中对应的成员可以有用户、部门、公司三种
2、类型。如果用户在角色当屮访问权限为允许那么该用户就可以访问当前公司对应的资源;如果部门在角色当前访问权限为拒绝,那么该部门以及该部门子部门中所有用户都不可以访问当前角色对应的资源;公司是一个容器,当前存放的是用户与部门,所以如果公司在角色当中访问权限为是,那么该公司当中的川户或部门就可以访问当前角色对应的资源。对于系统资源(URL资源、数据权限控制资源)保护,系统首先判断当前资源有没有与角色对应起來,如果对应起来,那么只有该角色当中明确声明可以访问的成员(用户、部门、公司)才能访问当前角色对应的资源,其它一概不允许访问。当某个登录川八要访问某个受保护的
3、资源时(当前资源与某个角色对应起來),系统首先判断当前登录用户是否在该资源对应的角色成员当屮,如果在其屮且允许访问该角色屮资源,那么就允许该角色访问目标资源;如果在角色当中,但不允许访问角色中资源,那么该用户就不能访问目标资源。如果当前用八不在该资源对应的角色当中,就判断当前用八所属部门是否在该资源对应的角色当中,如果在其中的,那么首先判断当前用户所在部门的上级部门能否访问该角色对应资源,如果当前用户所在部门的所有上级部门屮只耍有一个不允许访问当前角色对应的资源,那么该用户就不允许访问当前资源;反Z如果当前用户所在部门的所有上级部门都允许访问当前角色对
4、应资源,那么就判断当询用户直属的部门能否访问当前角色对应资源,如果可以访问,那么用八就可以访问当前资源,如果不可以,那么丿IJ户就不能访问资源;如果当前川户所在部门不在当前角色当中,那么就判断当前用户是否在当前角色对应的公司当屮(用户肖接属于公司或用户在公司对应的部门当中),再采用与之前相同的逻辑來判断当前用八是否可以访问被保护的目标资源。对页面组件进行授权是对页面当中诸如按钮、表格、表格列、树、树节点之类组件实现权限控制,直接将用户、部门或公司与页血组件资源对应起来,设置对应时还可以进一步设置组件资源与用户、部门或公司访问关系(允许访问还是拒绝访问)
5、,从而实现组件级別权限控制。组件存在于页曲当屮,所以在进行组件级别权限控制时,需要将组件资源与具体的URL资源对应起來,就可以在用戸浏览某页啲时根据组件权限的设置决定当前登录用户是否可访问当前页
6、衍中某些施加权限控制的组件。用到的主要表信息:表名描述SYS_MENU_RESOURCESURL菜单资源表,川来保存系统URL资源,供权限分配使用,也川来作为导航的菜单表SYS_COMP()NENT_RES()URCES组件资源表,用来保证业务界血当屮组件信息,供权限分配使用,组件不能单独存在,需要与URL关联SYS_ROLES角色表,用来存放角色信息,它是S
7、YS安全核心,一方iffl角色关联一批资源,另一方面角色与用户、部门、公司关联,实现资源权限控制。SYS_ROLE_MEMBERS角色成员表,实现角色打川户、部门、公司关联,同时关联时可设置角色中成员的访问权限(允许访问还是拒绝访问)。SYS_RESOURCE_ROLES角色资源表,川于实现角色于UrL资源、数据权限控制资源关联。SYS_COMPONENT_MEMBERS可以访问当前组件的成员表,有三种类型成员:用户、部门和公司。SYS_BUSINESS_DATA_CONDITION_RESOURCES用于实现业务数据权限的资源表通过AssemblyS
8、qlQuery类组装好需要的SQL语句,然肩再通过该屮提供的方法牛成最终执行的SQL,这样就可以实现业务数据的权限控制。AssemblySqlQuery类主要的方法如下表所示:方法名描述publicAssemblySqlQuery(String创建AssemblySqlQuery对彖实例的构造方法,要两fieldsExpression,QueryTable[]个参数,第一个参数是查询SQL屮耍获取的字段,queryTables)比如4tusername,gender,idM,第二个参数要指定查询的门标表,对于查询门标表而言一般是一张表,当然也可以有多个
9、,所以这里是-一个QueryTable对象的数组,如果查询目标表中有一个,那这个数组中只有一个
此文档下载收益归作者所有