权限控制解决方案.docx

上传人:scccc 文档编号:14167292 上传时间:2022-02-03 格式:DOCX 页数:7 大小:71.24KB
返回 下载 相关 举报
权限控制解决方案.docx_第1页
第1页 / 共7页
权限控制解决方案.docx_第2页
第2页 / 共7页
权限控制解决方案.docx_第3页
第3页 / 共7页
权限控制解决方案.docx_第4页
第4页 / 共7页
权限控制解决方案.docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《权限控制解决方案.docx》由会员分享,可在线阅读,更多相关《权限控制解决方案.docx(7页珍藏版)》请在三一文库上搜索。

1、权限控制解决方案角色与资源对应(资源包括、组件以及用于进行数据权限控制的资源等),一个角色可对应多个资源;另一方面角色与用户、部门、公司对应,一个角色可以对应多个用户、部门或公司,同时对于放入角色当中的用户、部门、公司可以设置这个角色成员在当前角色中的访问权限(允许还是拒绝访问),如果当前成员(用户、部门、公司)在当前角色中访问权限为允许访问,那么就可以访问当前角色对应的资源,否则就不能访问当前角色对应的资源,利用这种特性就可以很容易的实现权限的加减计算。角色可以与资源、数据权限控制资源对应,同时角色当中对应的成员可以有用户、 部门、公司三种类型。如果用户在角色当中访问权限为允许那么该用户就可

2、以访问当前 公司对应的资源;如果部门在角色当前访问权限为拒绝,那么该部门以及该部门子部门中所有用户都不可以访问当前角色对应的资源;公司是一个容器,当前存放的是用户与 部门,所以如果公司在角色当中访问权限为是,那么该公司当中的用户或部门就可以访 问当前角色对应的资源。对于系统资源(资源、数据权限控制资源)保护,系统首先判断当前资源有没有与 角色对应起来,如果对应起来,那么只有该角色当中明确声明可以访问的成员(用户、 部门、公司)才能访问当前角色对应的资源,其它一概不允许访问。当某个登录用户要 访问某个受保护的资源时(当前资源与某个角色对应起来),系统首先判断当前登录用 户是否在该资源对应的角色成

3、员当中,如果在其中且允许访问该角色中资源,那么就允许该角色访问目标资源;如果在角色当中,但不允许访问角色中资源,那么该用户就不 能访问目标资源。如果当前用户不在该资源对应的角色当中,就判断当前用户所属部门 是否在该资源对应的角色当中, 如果在其中的,那么首先判断当前用户所在部门的上级 部门能否访问该角色对应资源, 如果当前用户所在部门的所有上级部门中只要有一个不 允许访问当前角色对应的资源, 那么该用户就不允许访问当前资源;反之如果当前用户 所在部门的所有上级部门都允许访问当前角色对应资源,那么就判断当前用户直属的部门能否访问当前角色对应资源,如果可以访问,那么用户就可以访问当前资源,如果不

4、可以,那么用户就不能访问资源;如果当前用户所在部门不在当前角色当中,那么就判断当前用户是否在当前角色对应的公司当中(用户直接属于公司或用户在公司对应的部门当中),再采用与之前相同的逻辑来判断当前用户是否可以访问被保护的目标资源。对页面组件进行授权是对页面当中诸如按钮、表格、表格列、树、树节点之类组件实现权限控制,直接将用户、部门或公司与页面组件资源对应起来,设置对应时还可以 进一步设置组件资源与用户、部门或公司访问关系(允许访问还是拒绝访问),从而实 现组件级别权限控制。组件存在于页面当中, 所以在进行组件级别权限控制时,需要将组件资源与具体的资源对应起来,就可以在用户浏览某页面时根据组件权限

5、的设置决定当前登录用户是否 可访问当前页面中某些施加权限控制的组件。用到的主要表信息:表 描述名菜单资源表,用来保存系统资源,供权限分配使用,也用来作为导航的菜单表组件资源表,用来保证业务界面当中组件信息,供权限分配使用,组件不能单独 存在,需要与关联角色表,用来存放角色信息,它是安全核心,一方面角色关联一批资源,另一方 面角色与用户、部门、公司关联,实现资源权限控制。角色成员表,实现角色与用户、部门、公司关联,同时关联时可设置角色中成员 的访问权限(允许访问还是拒绝访问)。角色资源表,用于实现角色于资源、数据权限控制资源关联。7 / 6可以访问当前组件的成员表,有三种类型成员:用户、部门和公

6、司用于实现业务数据权限的资源表通过类组装好需要的语句, 然后再通过该中提供的方法生成最终执行的,这样就可 以实现业务数据的权限控制。类主要的方法如下表所示:方法描述名(口)创建对象实例的构造方法,要两个参数,第一个参数是查询中要获取的字段,比 如“”,第二个参数要指定查询的目标表,对于查询目标表而言一般是一张表, 当然也可以有多个,所以这里是一个对象的数组,如果查询目标表中有一个,那 这个数组中只有一个对象,否则应该有多个。是一个简单的对象用于设置查询中是否有连接,如果有则将具体的连接的表达式设置进去,比如“”,当前如果不需要连接就可以不用设置用于设置查询中的条件部分的内容,比如: ?(口)设

7、置参数条件对应的值,这里要求给一个对象类型的数组,用于填充在方法中填写条件中的?,比如上面的?()()用于设置查询中的 部分,比如得到经过组装的、可能带有动态添加用于权限控制的条件的查询,开发人员可以通过该方法将取到的交给数据库进行查询()得到经过组装的、可能带有动态添加用于权限控制的条件的查询数据总数,一般用于分页查询时使用表的关键列信息如下表所示:列描述名具体业务数据表的表名,比如对哪个列添加条件约束,比如标准的条件表达式,比如、 、之类条件的值,这里的值可以是一个静态的值,比如,也可以是一段表达式,比如“表示要取当前登录用户所在部门的,“()”表示取当前登录用户的用户名,对于这里可以设置

8、的表达式,例如:1 .:当前登录用户所在部门的,如果当前登录用户隶属多个部门,这里是中间 用逗号分隔的多个部门。2 .:系统当中的对象,所以可以调用其()、()之类的方法,如上面的示例。3 .:当前登录用户所在部门的所有子部门的,同样用逗号分隔多个子部门的。4 .除了使用这些现成的表达式名,还允许开发人员自定义自己的动态表达式,如果需要定义自己的表达式,开发人员只需要实现接口,在该接口中只有 一个 , ()方法需要实现,这个方法要求返回一个对象,如下面的代码所示:, () ();();()();在上面的方法实现当中,注册了两个表达式,一个是名为,表示取当前系 统的默认日期,第二个名为取的是用户

9、的地址。实现类编写完成后,在系统启动时会自动扫描到该实现的存在,并对其进 行解析加载,这样后面我们就可以使用这里的及来作为列的值,比如:。采用类拼装好查询之后,接下来就需要在表中配置好相关的数据,以实现对查询动 态条件的添加。默认配置在表中的数据权限信息在没有分配给具体的人时不会生效,只有显示的将表中数据权限内容分配某个人或部门或公司,这样这个人或部门下的人或公司下的所有的人在访问有数据权限控制的表数据时,就不会在查询的后面动态添加条件,从而限制 用户可看到的业务数据的量,同时如果表中某数据权限给了某个人或部门或公司,那么只有这个人或部门下的人或公司下的人才可以看到动态产生查询后的业务数据,其它人在浏览该业务时会动态在查询的的条件部门加上,也就是说看不到任何业务数据。在类的里找到方法,这个方法里有这么一句调用();这里的变量里就是生成的语句了

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1