

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、对对 EMS 权限管理模块设计权限管理模块设计1.1. 权限设计概述权限设计概述1.11.1 引言引言随着Web服务的复杂度增加以及用户数量和种类的增多, 安全问题在理论及工程上都是一个必须考虑的问题,而权限管理是安全问题中一个很重要的方面。因此本文针对权限做了一个分析。权限可简单表述为这样的逻辑表达式:判断“Who 对 What(Which)进行 How 的操作”的逻辑表达式是否为真。1.21.2 意义意义用户管理及权限管理一直是应用系统中不可缺少的一个部分系统用户很多,系统功能也很多不同用户对系统功能的需求不同出于安全等考虑,关键的、重要的系统功能需限制部分用户的使用出于方便性考虑,系统功
2、能需要根据不同的用户而定制1.31.3 目标目标直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要,除了功能的必须,更主要的就是因为它足够直观。简单,包括概念数量上的简单和意义上的简单还有功能上的简单。想用一个权限系统解决所有的权限问题是不现实的。设计中将变化的“定制”特点比较强的部分判断为业务逻辑,而将相同的“通用”特点比较强的部分判断为权限逻辑就是基于这样的思路。扩展,采用可继承的方式解决了权限在扩展上的困难。引进Group概念在支持权限以组方式定义的同时有效避免了权限的重复定义。2.2. 基于角色的权限管理设计基于角色的权限管理设计( (Role-BasedAc
3、cessControl,RBAC),RBAC)2.12.1 权限管理用例图权限管理用例图2.22.2 用例图描述用例图描述超级管理员超级管理员:系统中默认的角色,它是系统中拥有最高权限的角色,它不仅能够管理其他的管理员和用户,而且还可以对系统中每个模块的任一功能进行操作、维护。普通管理员普通管理员: 它是由超级管理员创建的, 并授予权限, 它能够管理系统中大部分的功能,它可以查看所有普通管理员、普通用户的信息,它只能对由它自己创建的用户进行编辑、删除操作,和管理拥有权限的模块。普通用户普通用户:它是系统中最低权限的角色,它只能对自己拥有的权限进行操作,一般情况下,它的权限是对信息的浏览和对自己
4、信息的录入,修改。登陆系统登陆系统:根据用户拥有的权限不同,用户所能操作的功能多少就不同,所以在登陆系系统悅覘菅瑚軾它挾规苦理忧別改迂仙鱼幣息.挨予板限增剧改査用户信息,刖配H1色八菅那二凰镇營理员垂址捺纵管那用户菅理登陆乘统 其遅禺块戡理捋能助能的操件对普通用户进行谡理A普诫管理员统的时候就要对用户的权限进行判断。用户管理用户管理:这里对本系统的登录用户进行维护。包括,新建、删除、编辑、注销等;系统初始化的时候,用户管理中默认只有一个拥有超级管理员角色的用户,因此在初始化登陆的时候,只能用这个用户登陆,其他的用户由这个用户创建并授予角色。角色管理角色管理:角色是赋予系统用户的职权名称。包括,
5、新建、删除、编辑、注销等;系统初始化的时候,角色管理中默认只拥有一个超级管理员的角色,其他角色由拥有这个角色的用户创建并授权。其他模块其他模块:其他模块的每个功能都拥有一个唯一 Id,根据用户登陆的权限,再确定这些功能是否对用户开放。3.3. 权限设计思路权限设计思路3.13.1 基于角色的访问控制基于角色的访问控制 RBACRBACRBACRBAC 的主要思想是: :权限(PermissionsPermissions)是和角色(RolesRoles)相联系的,而用户(UsersUsers)则被指定到相应的角色作为其成员。这样就使权限的管理大大简化了。系统的权限控制主要是采用基于角色的访问控制
6、,把权限绑定到角色上,当用户要操作权限时,就把角色赋给用户。而且在需要撤回权限时,只需把角色上的权限撤回就行了。3.23.2 思路思路为了设计一套具有较强可扩展性的权限管理,需要建立用户、角色和权限等数据库表并且建立之间的关系,具体实现如下3.33.3 用户用户仅仅是纯粹的用户用户用户仅仅是纯粹的用户,用来记录用户相关信息,如用户名、密码等,权限是被分权限是被分离离出去了的。用户出去了的。用户(User)要拥有对某种资源的权限,必须通过角色(要拥有对某种资源的权限,必须通过角色(Role)去关联)去关联。用户通常具有以下属性:编号,在系统中唯一。名称,在系统中唯一。用户口令。注释,描述用户或角
7、色的信息。3.43.4 角色角色是使用权限的基本单位角色角色是使用权限的基本单位,拥有一定数量的权限,通过角色赋予用户权限,通常具有以下属性:编号,在系统中唯一。名称,在系统中唯一(监控人员)注释,描述角色信息.-(在线监控人员)3.53.5 权限权限权限指用户根据角色获得对程序某些功能的操作权限指用户根据角色获得对程序某些功能的操作,例如对文件的读、写、修改和删除功能,通常具有以下属性:编号,在系统中唯一。名称,在系统中唯一-(添栅山改,查)注释,描述权限信息-允许增加监控对象3.63.6 用户与角色的关系用户与角色的关系一个用户一个用户(User)对应一个角色对应一个角色(Role),一个
8、角色可以被多个用户使用一个角色可以被多个用户使用,用户角色就是用来描述他们之间隶属关系的对象。用户(User)通过角色(Role)关联所拥有对某种资源的权限,例如用户(User):UserIDUserNameUserPwd1张三xxxxxx2李四xxxxxxRoleIDUserRoleNote(用户角色注释)02用户“张三”被分配到角色“监控人员”02用户“李四”被分配到角色“监控人员”从该关系表可以看出, 用户所拥有的特定资源可以通过用户角色来关联。3.73.7 权限与角色的关系权限与角色的关系一个角色一个角色(Role)可以拥有多个权限可以拥有多个权限(Permission),同样一个权限
9、可分配给多个角同样一个权限可分配给多个角色。色。例如:角色(Role):RoleUUID(角色UUID)01020304RoleRemark (角色注释)角色(Role):RoleID(角色编号)01020304RoleName (角色名称)系统管理员监控人员调度人员一般工作人员RoleNote(角色注释)监控系统维护管理员在线监控人员调度工作人员工作人员用户角色(User_Role):UserRoleIDUserID1122RoleName(角色名称)系统管理员监控人员调度人员一般工作人员监控系统维护管理员在线监控人员调度工作人员工作人员权限(Privilege):PrivilegeUUID
10、 (权限UUID)PrivilegeName(权限名称)PrivilegeRemark(权限注释)0001增加监控允许增加监控对象0002修改监控允许修改监控对象0003删除监控允许删除监控对象0004察看监控信息允许察看监控对象角色权限(Role_Privilege):RolePermissionIDRoleUUIDPrivilegeUUIDRole_PrivilegeRemark (角色权限注释)1010001角色“系统管理员”具有权限“增加监控”2010002角色“系统管理员”具有权限“修改监控”3010003角色“系统管理员”具有权限“删除监控”4010004角色“系统管理员”具有权限
11、“察看监控”5020001角色“监控人员”具有权限“增加监控”6020004角色“监控人员”具有权限“察看监控”由以上例子中的角色权限关系可以看出,角色权限可以建立角色和权限之间的对应关系。3.83.8 建立用户权限建立用户权限用户权限系统的核心由以下三部分构成:创造权限、分配权限和使用权限创造权限、分配权限和使用权限。第一步由Creator创造权创造权限限(Permission),Creator在设计和实现系统时会划分,指定系统模块具有哪些权限。第二步由系统管理员(Administrator)创建用户和角色创建用户和角色,并且指定用户角色(UserRole)和角色权限(RolePermiss
12、ion)的关联关系。第三步用户(User)登陆系统,对自己拥有的权限进行管理、使用。4.4. 权限的具体实现模式权限的具体实现模式模式一:用户模式一:用户- -角色角色- -权限权限( (最通用的方法最通用的方法) )4.14.1 数据库结构数据库结构4.1.1 用户表:表名:user_control_tab含义:用户表字段字段字段是否是是否为字段字段名称类型长度关键字空含义说明idbigint8是否编号主键,自增uuidbinary16否UUID唯一roleuuidbinary16否角色 UUID对应角色表的 UUIDusernamevarchar16否用户名只能是数字,字母,下划线组成us
13、erpwdvarchar16否密码密码的长度在 6-16 个字符之间realnamevarchar6否真实姓名要求填写用户真实姓名sexint2否性别0:男 1:女phonebigint11否移动电话用户的手机号码emailvarchar100否邮箱用户的邮箱remarkvarchar100是备注4.1.2 角色表:表名:role_tab含义:角色表字段名称字段类型字段长度是否是关键字是否为空字段含义字段说明idbigint8是否编号主键,自增uuidbinary16否UUID唯一rolenamevarchar16否角色名称只能是数字,字母,下划线组成remarkvarchar100备注4.1
14、.3 权限表:表名:privilege_tab含义:权限表字段名称字段类型字段长度是否是关键字是否疋否为空字段含义字段说明idbigint8是否编号主键,自增uuidbinary16否UUID唯一prinamevarchar16否权限名称只能是数字,字母,下划线组成extidvarchar100否功能 id页面功能的 id,唯remarkvarchar100备注4.1.4 角色权限表:表名:role_privilege_tab含义:角色权限表表字段名称字段类型字段长度是否是关键字是否为空字段含义字段说明idbigint8是否编号主键,自增roleuuidbinary16否角色 UUID引用角色
15、表的 UUID,唯priuuidbinary16否权限 UUID引用权限表的 UUID,唯remarkvarchar100备注4.24.2 在控制层写在控制层写 if/elseif/else 判断条件判断条件用户登入系统后,就通过其角色加载所有可以访问的页面,保存到Session,一直到用户退出系统或者session过期。用户访问页面时,添加一个Dispatcher(tapestry5方式),在这个Dispatcher中解析出页面地址如/cs/deposit, 和用户保存在Session里的可访问页面作比较,如果存在则继续,不存在则跳到登入页面。模式二:模式二:RalasafeRalasafe
16、 第三方组件(图形界面的形式,简单易用)第三方组件(图形界面的形式,简单易用)安装、配置与使用手册:http:/ 可以很好地分离权限与系统本身的功能可以很好地分离权限与系统本身的功能, 让开发过程更加关注系统让开发过程更加关注系统的核心功能,同时可以很容易做到开发时的任务划分,同时使项目代码的可读性大大提升的核心功能,同时可以很容易做到开发时的任务划分,同时使项目代码的可读性大大提升。权限模型的常量定义:一个系统里最常见的需求莫过于权限、角色,我们需要两个类,一个表明都有什么权限(例3、编写页面权限过滤器,例如 PagePermissionFilter,实现对页面请求的过滤;如:删除帖子权限、
17、编辑帖子权限,等等);另一个类表明,各个角色都有什么权限。这样子相当于定义了一个权限和角色模型。拦截器与注解:拦截器(Invocation)在在流行的开源框架中很常见,依赖的技术就是Java的动态代理。许多流行的框架都提供实现拦截器的接口,可以很简单就实现一个拦截器,此文不表如何实现。注解(Annotations)是JAVA在5.0后引入的特性,它引入的目的是为了替代一些简单的配置到java代码里,而不用原来的xml。注解请求示例:一般的框架,都会有一个controller类,以下用伪代码表示:publicclassThreadsControllerPriCheckRequired(Membe
18、rPrivilegeIdentity.CREATE_THREAD)publicStringcreateThread()returncreateThread;如代码中所示,一个controller里的一个method对应一个URL请求(例中所示为创建帖子)。我们只需要在其方法上标注PriCheckRequired(MemberPrivilegeIdentity.CREATE_THREAD),PriCheckRequired就是注解,其传递了一个信息MemberPrivilegeldentity.CREATE_THREAD,这也就是前文说的权限类中的创建帖子权限。可以想像在拦截器里要做的事情:拦截
19、器一般都是实现一个框架提供的接口来实现,常用框架都支持。1根据规定好的根据规定好的request请求的参数,取到用户属于哪个角色。请求的参数,取到用户属于哪个角色。2.根据根据controller中注解,取到当前要判断的权限。中注解,取到当前要判断的权限。3.对比用户角色是否有注解中的权限,如果有,放行,反之拦截。对比用户角色是否有注解中的权限,如果有,放行,反之拦截。具体的实现过程:拦截器的代码实现与框架有关:rose框架如何实现拦截器请看http:/code.google.eom/p/paoding-rose/wiki/Rose_Code_Fragment_Interceptor模式四:基于模式四:基于 webworkwebwork 和过滤器实现无代码侵入的原子级界面权限和过滤器实现无代码侵入的原子级界面权限修改 webwork 的基类 UIBean 来实现页面的权限控制:1、首先将页面的权限定义保存到数据库或 xml 的配置文件中;2、编写一个监听器 LoadPagePermissionListener 来从权限的描述文件中,加载权限信息到缓存;4、当用户请求一个 web 表单时,首先通过.action 去请求,此时.action 被PagePermissionFilter 过滤器拦截到,此过滤器中从用户所请求的 web 表单对应的 XML权
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农用机械售卖合同样本
- 农民鱼塘养殖合同样本
- 心脉高压症病人护理
- 农场果品购销合同样本
- 凉亭购销合同样本
- 农村田地流转合同样本
- 农村流转土地合同样本
- 典当合同样本5
- 佛殿施工合同样本
- 买卖犬只合同样本
- 浅谈基层禁毒工作存在的问题及对策
- GB/T 19879-2023建筑结构用钢板
- 驾驶员满意度调查表
- 2学术性评价意见
- 差积、累积曲线模板
- 汽车二级维护进厂及过程检验单参考模板范本
- 安徽省天然气开发股份有限公司天然气芜铜支线戴店幼儿园段迁改工程项目环境影响报告书
- 叙事护理学智慧树知到答案章节测试2023年中国人民解放军海军军医大学
- 汽车涂装技术(陕西国防工业职业技术学院)智慧树知到答案章节测试2023年
- 受迫振动与共振实验课件
- 2023年中考中考语文专题复习:关联词 专项练习题(含答案解析)
评论
0/150
提交评论