Android 锯齿数组用于RBAC权限管理
博客专区 > IamOkay 的博客 > 博客详情
Android 锯齿数组用于RBAC权限管理
IamOkay 发表于3年前
Android 锯齿数组用于RBAC权限管理
  • 发表于 3年前
  • 阅读 68
  • 收藏 25
  • 点赞 0
  • 评论 2

新睿云服务器60天免费使用,快来体验!>>>   

摘要: java中提供锯齿数据,某些时候特别有用,比如用group映射activity编号。在客户端,我们定义角色组,然后给每个组分配角色id;

一、原理

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是否包含在角色组中,如果包含则允许访问。

 

这样我们可以避免每次页面跳转时访问服务器。

 

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 179
博文 436
码字总数 354056
评论 (2)
spzp
大神,代码部分可以再详细点不?数据库应该怎么存啊?
IamOkay

引用来自“spzp”的评论

大神,代码部分可以再详细点不?数据库应该怎么存啊?
角色id和页面对应就行,其实这个把,最好把没有权限的页面入口给隐藏掉,体验会更好一些!
×
IamOkay
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: