文档章节

Android 锯齿数组用于RBAC权限管理

IamOkay
 IamOkay
发布于 2014/11/05 23:10
字数 884
阅读 105
收藏 37

一、原理

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

 

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

 

 

© 著作权归作者所有

共有 人打赏支持
IamOkay
粉丝 190
博文 461
码字总数 373670
作品 0
海淀
程序员
私信 提问
加载中

评论(3)

JPer
JPer
锯齿数组是什么鬼
IamOkay
IamOkay

引用来自“spzp”的评论

大神,代码部分可以再详细点不?数据库应该怎么存啊?
角色id和页面对应就行,其实这个把,最好把没有权限的页面入口给隐藏掉,体验会更好一些!
s
spzp
大神,代码部分可以再详细点不?数据库应该怎么存啊?
浅入浅出 Android 安全:第六章 Android 安全的其它话题

第六章 Android 安全的其它话题 来源:Yury Zhauniarovich | Publications 译者:飞龙 协议:CC BY-NC-SA 4.0 在本章中,我们会涉及到与 Android 安全相关的其他主题,这些主题不直接属于已经...

apachecn_飞龙
2016/12/02
0
0
浅入浅出 Android 安全:第四章 Android 框架层安全

第四章 Android 框架层安全 来源:Yury Zhauniarovich | Publications 译者:飞龙 协议:CC BY-NC-SA 4.0 如我们在第1.2节中所描述的那样,应用程序框架级别上的安全性由 IPC 引用监视器实现...

apachecn_飞龙
2016/12/05
0
0
android Content Provider 详解

Android中的Contentprovider机制可支持在多个应用中存储和读取数据。这也是跨应用共享数据的唯一方式。在android系统中,没有一个公共的内存区域,供多个应用共享存储数据。 Android提供了一...

鉴客
2011/12/21
39.2K
5
使用 ActivityGroup 对嵌入的 Activitys 进行管理

此前,我们对Activity进行了一些学习,在Android中,还提供了一个ActivityGroup类,该类是Activity的容器,可以包含多个嵌套进来的Activitys,我们接下来依然采用源码分析的方式来了解该类的...

鉴客
2011/09/19
1K
0
最全Android开发常用工具类

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java。 目前包括 HttpUtils、DownloadManagerPro、Safe.ijiami、ShellUtils、PackageUtils、PreferencesUtils、JSONUtils、FileU...

3eera
2014/11/18
12.9K
22

没有更多内容

加载失败,请刷新页面

加载更多

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
5分钟前
0
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
23分钟前
12
0
Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell当前的目录,之后直接拖拽传输文件即可。 pure-ftpd搭建ftp服务 pure-ftpd要比vsftp简单,...

野雪球
24分钟前
1
0
Confluence 6 文档主题合并问答

在 Confluence 官方 前期发布的消息 中,文档主题在 Confluence 6.0 及其后续版本中已经不可用。我们知道你可能对这个有很多好好奇的问题,因此我们在这里设置了一个问答用于帮助你将这个主题...

honeymose
57分钟前
2
0
java框架学习日志-2

上篇文章(java框架学习日志-1)虽然跟着写了例子,也理解为什么这么写,但是有个疑问,为什么叫控制反转?控制的是什么?反转又是什么? 控制其实就是控制对象的创建。 反转与正转对应,正转...

白话
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部