一、原理
java中提供锯齿数据,某些时候特别有用,比如用group映射activity编号。在客户端,我们定义角色组,然后给每个组分配角色id;
二、关于锯齿数组
此外涉及到http数据还是json数据保存护传输。
public static void main(String[] args){ //使用在json数据转换中 int[][] groups = new int[3][]; groups[0] = new int[]{1,3,4,5}; groups[1] = new int[]{6,2}; groups[2] = new int[]{1,3,5,6,8}; Gson gson = new Gson();//使用google开源工具类 Gson.jar String json = gson.toJson(groups); System.out.println(json); }
三、构建权限模型
对于每个用户的权限,基本上是RBAC形式,根据用户角色判断页面是否可以访问。
User -> Group -> Role
1、RBAC简介
RBAC是Role-Based Access Control的首字母,译成中文即基于角色的权限访问控制,说白了也就是用户通过角色与权限进行关联[其架构灵感来源于操作系统的GBAC(GROUP-Based Access Control)的权限管理控制]。简单的来说,一个用户可以拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。其对应关系如下:
在许多的实际应用中,系统不只是需要用户完成简单的注册,还需要对不同级别的用户对不同资源的访问具有不同的操作权限。且在企业开发中,权限管理系统也成了重复开发效率最高的一个模块之一。而在多套系统中,对应的权限管理只能满足自身系统的管理需要,无论是在数据库设计、权限访问和权限管理机制方式上都可能不同,这种不致性也就存在如下的憋端:
- 维护多套系统,重复造轮子,时间没用在刀刃上
- 用户管理、组织机制等数据重复维护,数据的完整性、一致性很难得到保障
- 权限系统设计不同,概念理解不同,及相应技术差异,系统之间集成存在问题,单点登录难度大,也复杂的企业系统带来困难
RBAC是基于不断实践之后,提出的一个比较成熟的访问控制方案。实践表明,采用基于RBAC模型的权限管理系统具有以下优势:
- 由于角色、权限之间的变化比角色、用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销;
- 而且能够灵活地支持应用系统的安全策略,并对应用系统的变化有很大的伸缩性;
- 在操作上,权限分配直观、容易理解,便于使用;分级权限适合分层的用户级形式;
- 重用性强。
2、步骤
①我们只需要给用户分配角色
setUserGroup(Group);
②给每个页面一个角色id
访问的时候从角色组取出id,比较页面id是否包含在角色组中,如果包含则允许访问。
这样我们可以避免每次页面跳转时访问服务器。