文档章节

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

IamOkay
 IamOkay
发布于 2014/11/05 23:10
字数 884
阅读 92
收藏 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
粉丝 187
博文 458
码字总数 370664
作品 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 API包名及包的功能的中文介绍

android 包含应用平台和在定义应用程序所用到android系统功能的应用权限的资料文件类, android.accessibilityservice:这个包中的类用于为无障碍服务的开发提供替代或增强的反馈给用户 andr...

织网人
2013/04/13
0
0
Android 学习笔记【基础扫盲篇】

前一段时间断断续续的看过几天android,由于不连贯,效果不是很好,最近打算用一个月的时间系统的学习一下。 1、android的生态系统 Android是由Google在2007年推出的一个开源系统平台,主要针...

samuel2012
2012/07/15
0
1
ActivityGroup是如何对嵌入的Activitys进行管理的

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

垂盆草
2012/07/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Maven 项目中依赖的搜索顺序

ettings_mirror 的优先级高于 central settings_profile_repo 优先级高于 settings_mirror settings_profile_repo 优先级高于 pom_repositories settings_profile_repo 优先级高于 pom_prof......

xingyu4j
22分钟前
2
0
改变maven项目的名称

pom.xml <groupId>com.soft.xxx</groupId><artifactId>xxx</artifactId><packaging>war</packaging><version>0.0.1-SNAPSHOT</version><name>xxx Maven Webapp</name><build>......

1713716445
23分钟前
2
0
windows下按照RabbitMQ

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rabbit MQ 是建立在Erlang OTP平...

zhaochaochao
23分钟前
2
0
10个PHP比特币开源项目

如果你是一个Phper,如果你希望学习区块链,那么本文列出的10个开源的Php比特币项目,将有助于你了解在自己的应用中如何加入对比特币的支持。 如果你希望快速掌握使用Php对接比特币钱包的方法...

笔阁
31分钟前
18
0
MyBatis级联探讨

数据模型 <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper name......

职业搬砖20年
34分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部