权限分析

原创 2012年03月26日 23:31:19

分析说明
v 每个用户在系统中由一个唯的USERID标识。  
v 用户通过系统登录界面登录系统,系统通过加密算法验证用户身份和判断用户是否已经登录系统。如果登录成功通知Application   preference   service和安全管理系统保存用户登录信息。  
v 角色由用户根据自己的设想的组织机构进行添加设置,提供一个专门的模块用来设置组织机构,用户通过组织机构(定义?部门机构还是后面提到的 "机构是实现和执行各种策略的功能的集合 ")方便地进行角色管理。例如:用户可以通过部门机构来进行角色的管理,部门采用编号分层的方式,编号的每两位为一个层次。例如一级部门编号为两位,二级部门编号为四位依此类推下去直到将全厂部门机构建立树状结构图。这类数据仅为方便用户管理角色而存在,在系统的其他方面不存在任何意义。  
v 每个角色在系统中也是由一个唯一角色编号来标识,同时必须保存用户所设置的机构信息,一般来说每个角色只需要保存自己所在机构的代码即可。
(二)菜单控制
需求
此菜单乃系统业务功能菜单。由业务功能模块列表和用户菜单定制共同组成。每个用户可以拥有自己的菜单,也可以直接采用角色缺省菜单(当用户同时充当多个角色并且权限重复时,重复的权限仅一次有效)
分析说明
v 为了方便用户进行权限组织管理,需要在系统中建立一张业务功能模块列表,在用户界面上表示为树状分层结构。  
v 业务功能模块以用户定制菜单来体现,仍然采用编号分层方式,编号的每两位为一个层次。并标明一个层次是子菜单还是业务模块,子菜单只有一种可否被访问的权限设置,业务模块权限由系统管理员或授权用户进行设置。对每个业务模块设置它的对象控制、记录增删改控制和记录集控制。当用户拥有对业务模块的某一权限时,必需对处于它上级的子菜单有可被访问的权限。删除某一个级子菜单时将提示用户他的下级菜单与功能模块都将被删除掉。  
v 当用户同时充当多个角色并且权限重复时,重复的权限仅一次有效,用户拥有他充当的所有角色的权限的并集。  
v 用户与角色拥有的系统权限查询时以业务功能模块列表的树状结构显示出来。  
(三)对象控制(现在未到达此阶段)
需求
对象是指应用系统窗口中的可视对象,如菜单项、按钮、下拉列表框、数据编辑控件及数据编辑控件的字段等。对象控制通过角色与用户授权来实现。
对象控制包括对对象属性的控制可对数据编辑控件中的数据记录的维护权限:
v 对象属性:使能/禁止、可视/屏蔽  
v 记录维护:增加、删除、修改的组合  
分析说明
v 将每个业务模块可进行属性设置的对象由程序员事先设定或由售后技术支持工程师指导用户加入。  
v 在系统管理员或授权用户进行设置业务模块的每种权限时,设置用户在拥有该业务模块这种权限时的对象属性。没有设置属性的对象在保存对象信息的时候,用户权限信息中不被保存。  
(四)记录集控制
需求
记录集的控制是通过条件设置来实现,因此,需要控制记录集的数据库表需要设置专门的记录集筛选字段,而筛选条件由用户根据岗位自进定义,建立过滤表,统一管理。
分析说明
1. 在对用户设置业务模块权限时,同时在过滤表中设置本模块的数据编辑控件的数据筛选条件,筛选条件是组成SQL语句的WHERE条件子句迫使当前访问的模块根据筛选条件对数据编辑控件的SQL语句进行重组,并检索数据。  
2. 当存在需要从数据库中多个表取数据的情况时,过滤表中存在多条记录,每一条记录记录一个数据编辑控件取数的筛选条件。  
3. SQL语句的WHERE子句的生成与校验可以通过的SQL语法分析服务,利用对象所提供的函数分析SQL语句,截取WHERE条件子句,校验新组合的SQL语句的合法性。
(五)权限分布管理
需求
上述提到的权限管理内容应该满足既可集中管理,也可分散管理的目标。
分析说明
1. 权限管理由系统管理员集中管理,系统管理员工作负担过大,难对所有岗位的分工有全面和具体的了解,对权限作出标准细致的划分,对于大型的管理系统适合于把一部分设置权限的交由一些比较高级的用户来进行,有利于各岗位细致协调的工作。这就是权限的分散管理。  
2. 要实现权限的分散管理,就须对授权模块进行一些授权管理,这要求整个系统的授权安全管理工作要做到细致,不要出现权限的漏洞使一些高级用户拥有过大的权限。

 

在用户登陆时,设置2个session
session.setAttribute( "login ", "true ");//简单的判断登陆状态,可以在表里做个字段,登陆时改那个字段的值也可以;
session.setAttribute( "userGroup ", "admin ");//登陆时根据表里的用户组ID,来定义不同的SESSION值;

在一个类文件中定义一个获取用户组信息的方法:
public   String   checkUserGroup(int   userGroupID){
String   msg=null;

switch(userGroupID){  
case   0:   msg   =   "admin ";break;
case   1:   msg   =   "user ";break;
default   :   msg   =   "guest ";//可以根据需求加用户组
}
return   msg;
}
}//end   checkUserGroup  

在登陆的servlet或JSP页里使这个方法就可以得到相应的组名了;用这2个SESSION值来判断用户的状态和组;

再写一个filter,doFilter方法大致如下
public   void   doFilter(final   ServletRequest   req,final   ServletResponse   res,FilterChain   chain)throws   IOException,ServletException
{
HttpServletRequest   hreq   =   (HttpServletRequest)req;
HttpServletResponse   hres   =   (HttpServletResponse)res;
HttpSession   session   =   hreq.getSession();
String   isAdmin   =   null;

try{
isAdmin   =   (String)session.getAttribute( "userGroup ");//获得页面的session值
if(!(isAdmin==null)   &&   isAdmin.equals( "admin ")   ){//判断其是管理员则放行;
chain.doFilter(req,res);
}else{
System.out.println( "is   not   admin ");//测试使
hres.sendRedirect(error_page.jsp);
}
}catch(Exception   e){
e.printStackTrace();
}
}//end   doFilter

写好过滤器后,去项目的web.xml里进行filter的设置,设置其要进行保护的文件夹:
<filter>
<filter-name> CheckAdminGroup </filter-name>
<filter-class> bookshop.filter.CheckAdminGroup </filter-class>
</filter>
<filter-mapping>
<filter-name> CheckAdminGroup </filter-name>
<url-pattern> /admin/* </url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name> CheckAdminGroup </filter-name>
<url-pattern> /secret/* </url-pattern>
</filter-mapping>

这样你在admin,secret里的所有资源,就都被这个过滤器保护起来了,一个过滤器可以对多个资源进行保护,你就按这样的思路,再写个判断用户是否登陆,和一个用户是否属于用户组的过滤器,就实现权限分级了;

 

 

权限的分配可以分按具体的功能分配和按资源的分配,建一个专门的用户权限对应表用以存放每个用户的相关权限.功能的分配是用户的可进行操作的项,资源的分配就是用户具体操作涉及到数据库中数据时的限制(比如说id <100的系统参数普通用户不可改等限制).功能的分配可以提供功能树链接来面向用户,当然连接得通过action来转入以避免用户直接打url就可进入,资源的分配也得建一个表,用于确定用户对于某个功能的数据操作限制.
        还有为了便于管理,最好有角色作为权限的载体,一个用户实际的权限可以这样组成:专门分配给他的和他所具有的所有角色的权限合集.

权限分析

最近几个月,做了一个机动车维修监管系统,是我们公司为中国运输管理局做的一个项目。这个项目,主要分为以下几个级:区级,市级,省级,国级。因为每一个级都有不同的要求,所以每个级别的系统都要有不同的权限。下...
  • Fire_kr
  • Fire_kr
  • 2016年02月24日 22:03
  • 236

Linux权限的简单剖析

一、权限是什么 权限(privilege)是指某个特定的用户具有特定的系统资源使用权力。举个简单的例子,夏日炎炎,你看到路边有卖西瓜的,你想要吃西瓜,你就得买它,买它其实就是获取你对西瓜的使用权限,...
  • ljx_5489464
  • ljx_5489464
  • 2016年07月01日 03:47
  • 635

系统用户权限与角色分析

 一、术语说明: 1. 用户与角色: 用户与角色是使用权限的基本单位,角色是一组具有相同限限的用户变集。 用户与用户之间不存在相互隶属关系,它只能属于某个角色,角色可以隶属于其它角色,且可以为多重隶属...
  • yanhui20022008
  • yanhui20022008
  • 2007年07月28日 11:04
  • 562

浅析android中的权限管理--用户安装的apk的uid,gid是如何分配的

Android的开发者一般分为两类,一类是做framework开发,一类是做第三方APP开发。两者最大的区别就是能够使用到的系统权限不一样。网上也有好多关于如何获得root权限的讨论和文章。我这里就不...
  • Melody_lu123
  • Melody_lu123
  • 2011年10月21日 11:50
  • 4130

BW:Authorization Object(授权对象的创建及分析方式)

这段时间。。瞎忙,都没时间总结了 另,此Authorization Object和彼Authorization Object(分析权限)是不同的    我也很纳闷,为啥俩都这么叫。。其实另外...
  • asdfak
  • asdfak
  • 2010年12月17日 11:33
  • 2182

CRM权限分析

1. Scenario: At your customer you have created your own Work Centers and/or navigation links. The...
  • dylan122738
  • dylan122738
  • 2013年02月06日 21:52
  • 1309

项目权限管理分析

需求 OA(Office Automation)系统包含很多模块,它要求针对不同用户要有不同的操作或者说是界面展示,这样我们就不得不考虑使用一种能够控制不同用户访问不同模块甚至是一个模块中不同功能点的...
  • smszhuang168
  • smszhuang168
  • 2013年05月03日 15:27
  • 1437

权限控制相关数据表分析和创建

权限控制相关数据表分析和创建 实体类分析:包含用户、角色、权限三大块 用户User,角色Role,权限Permission 为了方便进行动态的菜单管理,也就是不同权限用户进入到后台...
  • a772304419
  • a772304419
  • 2018年01月06日 21:04
  • 21

Android权限扫描工具

Android权限扫描工具1. 背景该工具是基于Androguard开源项目修改而成的,仅仅提取了其权限检查的功能(Androguard是一款功能丰富的Apk静态分析工具)。...
  • zk5580752
  • zk5580752
  • 2016年04月07日 23:21
  • 721

windows内核情景分析 --- 权限管理

Windows系统是支持多用户的。每个文件可以设置一个访问控制表(即ACL),在ACL中规定每个用户、每个组对该文件的访问权限。不过,只有Ntfs文件系统中的文件才支持ACL。 (Ntfs文件系统中...
  • maomao171314
  • maomao171314
  • 2014年04月04日 10:26
  • 1241
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:权限分析
举报原因:
原因补充:

(最多只允许输入30个字)