(计算机应用技术专业论文)orm架构下的权限管理系统研究与实现.pdf_第1页
(计算机应用技术专业论文)orm架构下的权限管理系统研究与实现.pdf_第2页
(计算机应用技术专业论文)orm架构下的权限管理系统研究与实现.pdf_第3页
(计算机应用技术专业论文)orm架构下的权限管理系统研究与实现.pdf_第4页
(计算机应用技术专业论文)orm架构下的权限管理系统研究与实现.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机应用技术专业论文)orm架构下的权限管理系统研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

o r m 构架下的权限管理系统研究与实现 摘要 我们实验室应中国海洋大学信息科技处要求开发的高校科研信息管理系统 是一套典型的信息管理系统。且由于科研项目流程本身的复杂性,这套系统的业 务需求上也较般的信息管理系统更加复杂。该系统采用了微软最新的n e t f r a m e w o r k3 5 作为开发平台,使用其中集成的l i n q 这一o r m 框架作为数据 访问。 “o r m 构架下的权限管理系统研究与实现”这一课题,首先服务于高校 科研信息管理系统这一项目,而该系统将作为高校科研项目管理工作的核心,对 科研发展有重要意义。更高层次上,课题对l i n q 等o r m 框架在权限管理系统 中的应用做出研究和探讨,为o r m 技术在更广和更深层次上的应用提供指导。 本文首先简要阐述了研究开发该系统的背景和意义,所用得到n e t f r a m e w o r k 、o r m 、r b a c 等关键技术。其次,详细介绍了系统体系结构、系 统需求分析、系统整体设计方案及其功能模块的详细设计和具体实现。最后,对 系统以后的发展做了展望。 本文设计和实现了一个功能全线、界面友好、操作简单的权限管理系统,作 为科研信息管理系统中重要的基础部分。 关键字:权限;o r m ;s ;科研信息管理系统 r e s e a r c ha n di m p l e m e n to fp e r m i s s i o n m a n a g e m e n ts y s t e mb a s e d o no rm a p p i n g a b s t r a c t p e r m i s s i o nm a n a g e m e n ts y s t e mi sa ni m p o r t a n tp a r to fa l m o s ta l l m a n a g e m e n ti n f o r m a t i o ns y s t e m ,i st h eb a s ep a r to fs e c u r i t yr e q u i r e m e n t a g o o dp e r m i s s i o nm a n a g e m e n ts y s t e ms h o u l dd e n yu n a u t h o r i z e da c c e s ss t r i c t l y ; o nt h eo t h e rh a n d ,i ts h o u l db ef r i e n d l yt oo t h e rp a r t so ft h es y s t e m a so r mf r a m e w o r kb e c o m em o r ea n dm o r ep o p u l a r , t h ea c c e s s e st o d a t a b a s eb e c o m eq u i t ee a s y n o wn e wm i s sa l m o s tu s eo r mf r a m e w o r kf o r a c c e s st od a t a b a s e h o wt od e s i g nag r e a tp e r m i s s i o nm a n a g e m e n ts y s t e mb a s e d o no r mi sav e r ym e a n i n g f u lw o r k t h es r i m s ,s h o r tf o rs c i e n c er e s e a r c hi n f o r m a t i o nm a n a g e m e n ts y s t e m , w h i c ho u rl a b o r a t o r yd e v e l o p e df o ro c e a nu n i v e r s i t yo fc h i n a ,i sat y p i c a lm i s b e c a u s eo ft h ec o m p l e x i t yo fs c i e n t i f i cr e s e a r c hp r o j e c tf l o w , t h i ss y s t e mi sm o r e c o m p l e xt h a nn o r m a lm i s w eu s em i c r o s o f t n e tf r a m e w o r ka st h ep l a t f o r m w i t hl i n qw h i c hi n c l u d e di n n e tf r a m e w o r ka st h eo r mf r a m e w o r kt oa c c e s s t od a t a b a s e t h es u b j e c t r e s e a r c ha n di m p l e m e n to fp e r m i s s i o nm a n a g e m e n ts y s t e m b a s e do no rm a p p i n g ,f i r s ta sp a r to fs r i m s ,i th a si m p o r t a n tm e a n i n gf o r s c i e n t i f i cr e s e a r c hm a n a g e m e n to fo c e a nu n i v e r s i t yo fc h i n a ,f u r t h e rm o r ei t d i s c u s s e sh o wt ou s eo r mi np e r m i s s i o nm a n a g e m e n ts y s t e mw h i c hc a nb ea i n t r o d u c t i o nf o ru s i n go r mt e c h n o l o g yi nm o r ew i d ea n dd e e ps c o p e i nt h et h e s i s ,f i r s to fa l l ,i th a sp r e s e n t e dt h em a i nb a c k g r o u n da n d s i g n i f i c a n c e a b o u tt h i st h e s i sa n di t st e c h n o l o g yi n c l u d i n g n e tf r a m e w o r k , o r m ,r b a ce t c s e c o n d l y , i ti n t r o d u c e si nd e t a i l st h er e a l i z a t i o no ft h es y s t e m , i n c l u d i n gd e m a n da n a l y s i s ,t h es y s t e ma r c h i t e c t u r ed e s i g na n dr e a l i z a t i o no f f u n c t i o n a lm o d u l e s i nt h ee n d ,i td e s c r i b e st h ef u t u r eo ft h es y s t e m t h et h e s i sw o r k so u tav i s u a lp e r m i s s i o nm a n a g e m e n ts y s t e mb a s e do n o r m ,w h i c hi sa ni m p o r t a n tp a r to fs r i m s i tp r o v i d e sam u l t i f u n c t i o n , u s e r - f r i e n d l ya n ds i m p l eo p e r a t i o np l a t f o r m k e yw o r d s :p e r m i s s i o n ;o r m ;m i s ;s c i e n t i f i cr e s e a r c hm i s 独创声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的 研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其 他人已经发表或撰写过的研究成果,也不包含未获得 一 或其他教育机构的学位或证书使用过的材戥共他教再衫l 俐嗣罕位戤让币使用也刖羽 料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明 并表示谢意。 学位论文作者签名:害长翅、瑞签字日期: 年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,有权保留并 向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人 授权学校可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用 影印、缩印或扫描等复制手段保存、汇编学位论文。同时授权中国科学技术信息 研究所将本学位论文收录到中国学位论文全文数据库,并通过网络向社会公 众提供信息服务。( 保密的学位论文在解密后适用本授权书) 学位论文作者签名:;长。璺、震帛 导师签字: 签字日期:年月 日 签字日期: k 月 建 年锹年 o r m 构架下的权限管理系统研究与实现 1 绪论 1 1 课题研究背景及意义 在几乎任何一个信息管理系统中,权限系统都是重要组成部分,是保证系统 安全性的基本要求。一个好的权限系统设计一方面要有严密的安全性之外,另一 方面还要为系统其它模块的开发提供便利。 关于权限系统的设计,从信息系统诞生之初就被广泛关注,也已经存在很多 成熟的模型,本文中所采用的基于角色的权限模型f 坦】就是其中的一种。但是另 一方面,以往权限系统的设计很多时候并没有顾及开发上的便利性,导致权限系 统的数据访问、与模块交互等成为开发工作中复杂而又易出错的部分。特别是当 系统的需求出现变化时,权限系统要随之变化往往十分困难。 随着0 r m 框架的广泛应用,数据库的访问得以大幅度简化。目前新开发的 信息管理系统基本上都引入了0 r m 框架。如何在0 r m 的基础上设计一个优秀 的权限框架,是一件非常有意义的工作。 笔者所在实验室应中国海洋大学信息科技处要求开发的高校科研信息管理 系统是一套典型的信息管理系统。且由于科研项目流程本身的复杂性,这套系统 的业务需求上也较一般的信息管理系统更加复杂。该系统采用了微软最新的n e t f r a m e w o r k3 5 【3 】作为开发平台,使用其中集成的l i n qt os ql 【4 】这一0 r m 框 架作为数据访问。 有理由认为,能够满足这样一个复杂系统的权限框架,在一定程度上可以认 为对于同类其它系统具有普遍的适用性。因此,我们选择该系统为基础,以0 r m 构架下的权限管理系统研究与实现为研究课题。 1 2 国内外研究现状 二十世纪九十年代以来,随着对在线的系统的研究不断深入,角色的概念逐 渐形成,并逐步产生了以角色为中心的访问控制模型。美国国家标准化技术委员 会n i s t 于9 0 年代初提出了基于角色的访问控制方法,实现了用户与访问权限的 0 r m 构架下的权限管理系统研究与实现 逻辑分离,构造了角色间的层次关系。【5 】 至今,已经有了很多成熟的权限框架,例如微软a s p n e t 平台下的 m e m b e r s h i p 6 、j a v a 平台下的a c e g i 7 ,但大多并不是基于0 r m 的。 而基于0 r m 框架的权限设计多是与当前系统紧密耦合在一起的,缺乏重用 性,并不能称之为框架。这不仅仅导致了在不同项目间重复开发的浪费,还导致 了当目前项目需求变化时,权限系统的设计难以随之变化的问题。 1 3 本文的主要工作 本文的主要工作是完成科研信息管理系统的权限系统设计,实现其中的权限 管理系统模块,同时满足系统复杂权限判定的需求,并在一定程度上为系统未来 的演化留有余地。 同时,在满足科研信息管理系统项目开发的基础上,提炼出适用于采用0 r m 框架的信息管理系统的较为通用的权限框架的开发方案。 本文的对该权限设计中的理论基础和实现技术做了较为详细的介绍,并用一 定的篇幅分析了系统中关键技术的实现。在设计和开发的过程中,尽量遵守软件 工程的原理和步骤。 论文的具体安排如下: 第一章绪论 第二章相关技术介绍 第三章系统需求分析与总体设计 第四章详细设计与具体实现 第五章系统测试 第六章总结和展望 2 0 r m 构架下的权限管理系统研究与实现 2 相关技术介绍 2 1o r m 2 1 10 r m 概述 现如今大多数编程语言是基于面向对象的模型【8 】,该模型通过诸如封装、关 联、聚合、继承、多态等技术,很好地抽象了真实世界问题域,对现实数据实现 了易于理解的自然描述【9 】。另一反面,对于实际应用中需要处理的数据,现在的 方法多数是采用关系型数据库【1 0 】。这就涉及到面向对象描述的数据如何持久化 的问题。 通常,开发人员会抽象出一个专门的层次负责数据访问,称之为持久化层。 该层负责将内存中的运算结果写入数据库,同时也负责将数据库的数据加载到内 存中来。 传统的持久层是通过开发人员编写s q l 语言实现的。开发人员通过在宿主 语言中执行“s e l e c t ”等命令从数据库中读取数据加载到内存中:通过执行 “i n s e r t ”、“u p d a t e 、“d e l e t e 等语句进行数据的插入、修改和删除。几乎 所有的项目开发均需要实现这些原子操作,而这些操作在项目开发中都很类似。 显然在每个项目中这种重复而具备相同模式的代码是一种明显的浪费。这就迫切 的要求新技术的产生,以改变这种情况。 另一方面,通过编写s q l 语言进行持久化操作,虽然将使用面向对象进行 建模的业务层与使用关系代数的数据库相分离,但仍不能避免业务层和数据库的 修改导致的大量维护工作。而这些维护通过通常以为的昂贵的维护费用、服务暂 时不可用和潜在的系统b u g 。 以上这些原因催生了o r m 技术的产生。 o r m ( o b j e c tr e l a t i o n a lm a p p i n g ) 即对象关系映射,它是为了解决面 向对象系统与关系系统之间“对象关系的阻抗适配”问题【1 1 】发展出的一种 技术。通过元数据或约定等方式将面向对象领域的对象关系映射为关系数据库领 域的关系。其层次结构如图2 1 。 3 0 r m 构架下的权限管理系统研究与实现 业务逻辑层 实体域列象 卜- 过程域对象 业务数据) 业务j 擞) v l 持久化层( 。刚中阍件负责封装黻访问细节) ) 图2 10 r m 系统结构 使用0 r m 作为持久层,面向对象的开发者感觉不到数据库的存在,只要将 需要存取的数据通知持久层,其他的事情都由持久层的内部机制来实现。 如果数据库发生某种变化,持久层则负责对业务层屏蔽这些变化,为业务类 提供高度统一的数据访问模式。0 r m 框架工作在业务层和持久机制之间,它为业 务逻辑包装了数据类的持久化实现,保护应用开发者不受底层变化的影响 8 】。使 得我们可以在业务层完全专注于问题域,而无需理会繁杂的数据库操作问题,只 需发出简单的s a v e 、r e t r i e v e 、d e l e t e 等命令,o r m 框架便自动将对对象的 操作映射为对相关的数据表和字段等的操作。 对于持久机制而言,它也屏蔽了面向对象的特征,使得数据库管理员可以专 注于数据库的管理与维护,而不必过分担心其一举一动会导致应用程序崩溃。 目前主流的开发平台例如n e t 、j a v a 、r u b y 等都有大量优秀的0 r m 框架, 其中很多是开源项目。 2 1 2 n e t 平台常用0 r m 框架 n e t 平台被广泛使用的主要有以下几个: 一、n h i b e r n a t e n h i b e r n a t e 来源于非常优秀的基于j a v a 的h i b e r n a t e 关系型持久化工具 1 1 3 ,它从数据库底层来持久化n e t 对象到关系型数据库,开发人员所写的代码 仅仅和对象关联。 4 o r m 构架下的权限管理系统研究与实现 n h i b e r n a t e 自动产生s q l 语句,并确保对象提交到正确的表和字段中去。 大量减少开发时人工使用s q l 和a d o n e t 处理数据的时间。n h i b e r n a t e 可以 帮助消除或者包装那些针对特定数据库的s q l 代码,并且把结果集从表格的表 示形式转换到一系列的对象。 二、n b e a r n b e a r 是国人开发的一个o r m 框架,现在已经发布了3 0 正式版。n b e a r 包含的组件不仅仅是数据持久层,还包含了i o c ,分布式组件和w e b 组件。 n b e a r 的核心包括一个泛型、强类型的o r m 数据持久化接口、一组相关的 e n t i t y 相关组件、高性能分布式组件、w e b 组件。 三、c a s t l ea c t i v e r e c o r d a c t i v e r e c o r d 是c a s t l e 中的一个子项目,现在的版本是r c1 。它同样是 一个非常优秀的持久层框架,在底层封装了n h i b e r n a t e ,改用a t t r i b u t e 来代 替配置文件,这样就不用再像n h i b e r n a t e 那样去编写复杂的配置文件。 四、i b a t i s n e t i b a t i s n e t 分为d a t a m a p p e r 和d a t a a c c e s s 两部分,应该说 d a t a m a p p e r 是这个框架的核心,d a t a m a p p e r 使用x m l 文件来实现从实体 到s q ls t a t e m e n t s 的映射,学习起来非常简单。 使用d a t a m a p p e r 后,开发人员可以自由的使用s q l 语句或者存储过程; d a t a a c c e s s 允许开发人员通过一个简单的接口来操作数据,而不必了解底层 实现的细节。 五、l i n qt os q l l i n qt os q l 是微软官方随n e tf r a m e w o r k3 5 提供的一个o r m 框架,采 用l i n q 作为数据查询语言,查询功能十分强大。同时,l i n qt os q l 和v i s u a l s t u d i o n e t2 0 0 8 结合紧密,提供了一系列强大的可视化工具。我们使用该框架 作为系统的o r m 框架,下一节将对该框架进行详细介绍。 5 o r m 构架下的权限管理系统研究与实现 2 2lin qt os q l 2 2 1 l i n q l i n q ( l a n g u a g ei n t e g r a t e dq u e r y ) ,即语言集成查询,是v i s u a ls t u d i o 2 0 0 8 和n e tf r a m e w o r k3 5 版中一项突破性的创新,它在对象领域和数据领 域之间架起了一座桥梁。 l i n q 定义了一组通用的标准查询操作符,允许在任何基于n e t 的编程语言 中通过直接的声明方式进行遍历、筛选和投影操作。标准查询操作符允许将查询 应用于任何基于i e n u m e r a b l e 的信息源。以下是一个使用l i n q 进行集合查询的 操作代码片段: u s i n gs y s t e m ; u s i n gs y s t e m l i n q ; u s i n gs y s t e m c o l l e c t i o n s g e n e r i c ; c l a s sa p p s t a t i cv o i dm a i n ( ) s t r i n g 】n a m e s = 1 b u r k e 。,“c o n n o r ,”f r a n k , ”e v e r e t t ”,”a l b e r t ”,”g e o r g e ”, ”h a r r i s ”,”d a v i d ”) : i e n u m e r a b l e q u e r y = f r o msi nn a m e s w h e r es l e n g t h = = 5 o r d e r b ys s e l e c ts t o u p p e r ( ; f o r e a c hf s t r i n gi t e mi nq u e r y ) c o n s o l e w r i t e l i n e ( i t e m ) ; | 输龃: b u r k e d a v i d f r a n k ) )? l i n q 还允许第三方使用特定于域的新操作符( 适用于目标域或技术) 来补 充标准查询操作符集。更重要的是,第三方还可以使用自己提供附加服务( 例如 6 o r m 构架下的权限昔4 系统研究与实现 远程计算、查询转换、优化等) 的实现来自由替换标准查询操作符。通过符合 l i n q 样式的约定,此类实现u t 以享受与标准查询操作符相同的语言集成和工具 支持。 查询体系结构的可扩展性在l i n q 项目本身中用于提供可同时处理x m l 和s q l 数据的实现。 处理x m l 的查询操作符( l i n q1 0x m l 使用一个高效、易于使用的内存中 x m l 工具来提供宿主编程语言中的x p a t h x q u e r y 功能。 处理关系数据的查询操作符( l i n qt os q l l 将基于s q l 的架构定义集成 构建到c l r 类型系统中。该集成通过关系数据提供强类型化,同时直接在底层 存储中保留关系模型的表达功能和查询计算的性能。 ob | e c f s 22 2l i n q t os q l n e tl a n g u a g ei n t e gr a t e dq u e r y 【l i n o 图2 - 2l i n q 构架 l i n qt os q l 是l i n q 的一个分支,它允许开发人员用n e t 的类来对一个关 系型数据库建模。然后可以用l i n q 对数据库进行查询,以及进行更新、插入、 删除数据的操作。 l i n qt os 0 l 完全支持事务,视图和存储过程。它还提供了一种把数据验证 和业务逻辑规则结合进数据模型的便利方式。 l i n qi os q l 是在a d on e t 的基础上实现的。相比于a d on e t ,它具有以 7 0 r m 构架下的权限管理系统研究与实现 下有点: 第一,它自动翻译s q l 语句,包括各类查询语句和数据操作语句,无需开 发人员接触s q l 。这对不很精通s q l 的开发人员和团队中不具有专职d b a 的小 团队来说,这无疑是一个福音。 第二,l i n qt os q l 语句是在编译期间进行检查的,而不是运行时检查。这 样大大提高了错误的发现几率,降低了因为拼写错误而导致的系统b u g ,而此 类b u g 无论实在开发中还是在维护中,都占很大的比例。 第三,l i n qt os q l 是针对对象操作的,更符合编程语言面向对象的思考方 式。 另一方面,和n h i b e r n a t e 等传统o r m 框架相比较,l i n qt os q l 还具有 以下优点: 第一,影射代码自动生成。v i s u a ls t u d i o n e t2 0 0 8 提供了s q l m e t a l 和 o rd e s i g n e r 两个工具来完成此步骤。而在n h i b e r n a t e 中,开发人员必须手 工编写映射代码,虽然有一些工具可以帮助开发人员编写这些代码,但从效率方 面来讲,s q l m e t a l 和o rd e s i g n e r 和v i s u a ls t u d i o n e t2 0 0 8 紧密集成,远 高于第三方工具。 第二,影射代码有更多的选择。n h i b e r n a t e 只能把数据库的信息配置在一 个x m l 中。而l i n qt os q l 有两种方式:一个是放到x m l 中,称之为e x t e r n a l m a p p i n g ,另一种就是以a t t r i b u t e 的形式,存在于各个p r o p e r l y 中。两种方 法各有利弊,开发人员可以视情况选择。s q l m e t a l 和o rd e s i g n e r 这两种工具 分别提供了e x t e r n a lm a p p i n g 和a t t r i b u t e 两种映射方式的代码生成,而o r d e s i g n e r 还支持可视化编辑与设计。 以下是使用l i n qt os q l 进行数据查询的典型代码片段: 8 o r m 构架下的权限管理系统研究与实现 i n o r t h w n d 继承于s y s t e m d a t a l i n q d a t a c o n t e x t ,通常由系统自动生成。 n o r t h w n d 用于描述n o r t h w n d m d f 数据库的映射信息 n o r t h w n d 可以直接作为数据库的对象表现形式使用 n o r t h w n dn w = n e wn o r t h w n d ( ”n o d h w n d m d f ) : v a rc o m p a n y n a m e q u e r y2 f r o mc u s ti nn w c u s t o m e r s w h e r ec u s t c i t y = = ”l o n d o n ” s e l e c tc u s t c o m p a n y n a m e ; f o r e a c hf v a rc u s t o m e ri nc o m p a n y n a m e q u e r y ) c o n s o l e w r i t e l i n e ( c u s t o m e r ) ; 2 3 权限管理系统 2 3 1 权限管理系统 权限管理是每个管理信息系统软件中很重要的一环。权限管理系统通常是把 每个用户( 或用户组) 划分为几个级别,每个级别与系统的功能有一个矩阵对应 关系,由系统管理员通过一个界面对矩阵中是否具有某个功能的权限进行选择 【1 4 ,1 5 】。 权限管理系统是一个特殊的综合系统,主要负责信息系统中的安全管理策 略。为了使信息系统能够安全可靠的运行,必须建立一个严格的系统访问控制策 略,同时使用技术手段保证访问控制策略的执行。 一个完整的权限管理系统应该由3 个部分组成:权限分配模块;权限验 证模块;口令管理模块【1 6 】。权限分配模块面向系统管理人员,主要负责系统 访问控制策略的设置,同时建立和管理权限管理系统中的基本元素( 诸如用户、 角色、对象等) ,特别是当信息系统的功能或者用户发生变化后,系统管理人员 可以根据需要,随时调整系统的访问控制策略。权限验证模块面向系统开发人员, 主要负责权限的判断。这是为系统开发人员提供的编程接口,在进行系统功能设 计时由系统开发人员在所需要控制的关键点处调用,以便确定业务的执行逻辑。 口令管理模块面向系统所有用户,主要负责用户口令的设置与修改,从而使得用 9 0 r m 构架下的权限管理系统研究与实现 户的口令由个人自己掌握,即使是系统管理员也无法知道。 2 3 2r b a c 基于角色的权限控制( r b a c ) 模型作为目前最为广泛接受的权限模型。 r b a c 的基本思想是:将资源的访问权限分配给一定的角色,而不是用户。 用户通过饰演不同的角色获得角色所拥有的权限。依据r b a c 的基本思想,系 统定义各种角色,每种角色可以完成一定的职能,不同的用户根据其职能和职责 被赋予不同的角色,一旦某个用户成为某角色的成员,则此用户可以完成该角色 的职能。 n i s t ( t h en a t i o n a li n s t i t u t eo fs t a n d a r d sa n dt e c h n o l o g y ,美国国家 标准与技术研究院) 标准r b a c 模型由4 个部件模型组成,这4 个部件模型分 别是基本模型r b a c o ( c o r er b a c ) 、角色分级模型r b a c1 ( h i e r a r c h a l r b a c ) 、角色限制模型r b a c 2 ( c o n s t r a i n tr b a c ) 和统一模型r b a c 3 ( c o m b i n e sr b a c ) 【1 7 】。r b a c o 模型如图2 3 所示。 与 图2 3r b a c0 模型 ( 1 )r b a c o 定义了能构成一个r b a c 控制系统的最小的元素集合 在r b a c 之中,包含用户u s e r s ( u s e r s ) 、角色r o l e s ( r o l e s ) 、目标 o b j e c t s ( o b s 】、操作o p e r a t i o n s ( o p s ) 、许可权p e r m i s s i o n s ( p r m s ) :f 个基本 数据元素,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此 用户就拥有了该角色所包含的权限。会话s e s s i o n s 是用户与激活的角色集合之 间的映射。r b a c 0 与传统访问控制的差别在于增加一层间接性带来了灵活性, r b a c l 、r b a c 2 、r b a c 3 都是先后在r b a c o 上的扩展。 ( 2 )r b a c l 引入角色间的继承关系 角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要 1 0 o r m 构架下的权限管理系统研究与实现 求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则 进一步要求角色继承关系是一个树结构。 ( 3 )r b a c 2 模型中添加了责任分离关系 r b a c 2 的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用 户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分 离和动态责任分离。约束与用户角色权限关系一起决定了r b a c 2 模型中用户 的访问许可。 ( 4 )r b a c 3 包含了r b a c l 和r b a c 2 既提供了角色间的继承关系,又提供了责任分离关系。建立角色定义表。定 出当前系统中角色。因为有继承的问题,所以角色体现出的是一个树形结构。 o r m 构架下的权限管理系统研究与实现 3 系统需求分析与总体设计 3 1 系统需求分析 3 1 1 用户与用户组 科研信息管理系统中的用户分为三类:专家用户、管理员和企业用户。每一 类用户又可以分为若干用户组,例如管理员用户可以分为纵向项目管理员组、横 向项目管理员组、经费管理员组等。 系统可以为每一个用户组单独指定权限,隶属于该组的用户具有该组指定的 权限。根据系统需求,用户属于、且仅属于一个组。 用户可以修改所在的用户组,但新用户组必须和原用户组属于同一类型。例 如,专家用户分为高级专家和普通专家两个组,管理员用户分为纵向项目管理员 组、横向项目管理员组、经费管理员组。则一个属于普通专家组的用户可以修改 为高级专家组,但不能指定为纵向项目管理员组。 系统中存在至少一个超级用户,超级用户具有所有权限,且只有超级用户具 有用户管理权限。试图删除最后一个超级管理员的操作将失败。 同时,对于不符合任意组权限设定的特殊用户,系统可以为其单独指定权限, 而不需要单独建立一个用户组。该类用户称之为自定义权限用户。 3 1 2 权限的表现形式 权限系统是为系统其它功能模块服务的,系统各功能模块的权限判定方式各 不相同,但总体上可以分为基本权限和派生权限两种。 一、基本权限 基本权限指根据p o w e r l t e m 枚举中定义权限,这类权限的判定和上下文无 关,只要给出要判定的p o w e r l t e m 枚举项目即可。 基本权限又分为普通权限和含参权限。 ( 1 】普通权限 普通权限是指和动态参数无关的权限,例如“首页通知管理权限 ,具有该 1 2 o r m 构架下的权限管理系统研究与实现 权限的用户将可以发布、修改、删除、置顶首页的通知。 ( 2 ) 含参权限 含参权限指根据给出的动态参数来判断用户是否具有该权限。例如“某一个 类别的横向项目的管理权限”。横向项目具有很多分类,一个管理员可能仅管理 其中的某几个分类。横向项目的分类并不是预先设定好的,而是在系统使用过程 中可以动态修改的。这就要求在执行权限判定操作时,可以指定动态参数; 二、派生权限 派生权限表示这样一类权限:该权限的判定是由其它权限的判断结果来决定 的。例如“具有任意一个横向项目类别的管理权限”,它的判断取决于该用户符 合具有“所有横向项目管理权限”或具有“某一个、某一些横向分类的项目管理 权限”。 如果用p 表示派生权限,用p 1 ,p 2 ,p 3 p n 表示相关判定因素,用f 表 示映射关系,则: p = f ( p 1 p 2 ,p 3 p n ) 无法直接指定某一个用户是否具有某一项派生权限,而只能通过设置相关权 限来影响虚权限的判定。 派生权限又分为虚权限和衍生权限。虚权限仅仅是有基本权限作为相关判定 因素,而衍生权限还以当前操作对象作为判定因素。虚权限的判定方法隶属于权 限管理模块,而衍生权限的判定方法隶属于相应的功能模块。 3 1 3 系统功能 除了权限判定外,权限系统还包括用户及用户管理的各项功能。 1 3 o r m 构架下的权限管理系统研究与实现 3 2 系统总体设计 3 2 1 系统结构 图3 - 1 用户功能 系统采用典型的b i s 结构,以三层结构为基础,做了进一步的改进,兼顾瘦 客户端和富客户端【1 8 】的构架设计。两种模式分别用于科研信息管理系统的第四 版和第五版中。整个系统构架如图3 2 。 1 4 0 r m 构架f 的极限管理系统研究与实现 :6 ”。“i 型- 型二二= 三= := ! 二j 图3 2 系统架构 权限系统主要存在于业务逻辑( b u s i n e s s ) 层,该层次定义了权限相关的业 务实体以及权限判定、权限设置和权限信息保存等业务逻辑,是整个权限系统的 核心。 业务逻辑层数据访问( d a t a a c c e s s ) 层和数据库进行数据交互。数据访问 层由l i n q t os q l 这一o r m 框架承担 和写入。由于l i n qt os q l 框架的引入 负贵实际的数据持久化操作,包括查询 发层的代码太幅度讲话,不再有繁杂僵 化的s q l 语句拼写代码,而仅仅定义了代表数据库、代表数据库表等的u n q 数 据操作类,这些类实现了l i n q 核心的i q u e r y a b l e 接u ,支持l i n q 进行查询。 此外,用户o r 映射的x m l ,也作为嵌入式编译资源被包含在这一层次当中。 w e b b i t e 是系统的业务逻辑的外在表现,涉及权限部分的包括用户登陆、 用户列表、用户查询、新建用户、修改州户信息等。浚层通过调用业务逻辑层的 方法实现各个功能。 剩下的部分,c o m m o n 足基础框架,主要包含业务无关的基础类。t e s l 是单兀测试层;y d 足第一方类库,用于项目,i :发过程的自动化,包括实体代码 自动生成、0 r m 外部映射文件的自动生成等;u i 是显不辅助。 0 r m 构架下的权限管理系统研究与实现 3 2 2 模块设计 权限管理系统的模块及其层次结构如图3 3 所示。 图3 - 3 模块设计 从模块设计图中可以看到,权限系统以数据访问为基础,中层的业务逻辑划 分为权限判定、权限设置和口令三部分。 上层的权限管理部分调用权限判定、权限设置和口令三个模块实现权限管理 的相关功能,而功能模块只与权限判定部分交互,使用权限判定模块的方法判断 用户是否具有当前操作的权限。 3 2 3 类设计 权限系统主要涉及的类及其成员的设计如图3 4 。 16 o r m 构架下的权限管理系统日院与实现 _ ”研 :lhf- i o 慧淼。p 型:= l 兰一r = - 哪,、e 口d 一十 i ,b “ 口【 。 m i “ ,u ,h r 口k ,wr 。、 r 二 “1o ,m 7 h5 1p h ;l ! 璺竺篡:盟 “1 10 口 。;篙:,! :! ! = 竺 ,n 。7 vo 一 , m u ah m _ _ 一 ;= =i m j m 图3 - 4 权限系统主要类结构国( 箭头表示引用) 其中: f 1 】u s e r r o l e t y p e 枚举表示系统中的用户角色类型,分别是管理员、专家 和企业用户。 【2 】u s e r r o l e 类表示用户角色,其最主要的方法是h a s p o w e r 方法,用于 判断该用户角色是否具有某一项权限。 ( 3 ) u s e r 类表示用户,其中的h a s p o w e r 方法与u s e r r o l e 中的类似,用 户判断该用户是否具有某一项权限。 ( 4 ) u s e r 含有对u s e r r o l e 的引用,表示用户属于哪个角色。 f 5 ) u s e r r o l e 和u s e r 都拥有一个权限p o w e r ,即拥有一个p o w e r 的引用。 ( 6 ) 6p o w e r 真正处理权限的判断,u s e r r o l e 和u s e r 的h o s p o w o r 方法最 终委托给p o w e r 的h a s p o w e r 方法。 f 7 ) 7p o w e r l t e m 牧举描述的是系统中的权限项目。渡枚举是定值枚举,即 每定义一个枚举项,则其对应的值即被永久占用。及时该枚举项被删 除,其对应的值则永久失效,不能被新定义的新枚举项所使用。这种 方式是为了保证在枚举项目发生改变时数据库中的现有数据对应正 确的枚举项。权限变化的情况参见第五章。 ( 8 ) h a s n o p o w e r e x c e p t i o n 表示用户没有该操作的执行权限,该异常的抛出 蓍萋塞 o r m 构架下的枞阻管目系m 究与宴m 法 通常意味着系统受到了安全攻击。 以上类图l 】只显示了主要的类成员和方法,并投有丝示出类的所有成员和方 32 4 数据库设计 涉及权限系统的主要有以下三个数据表 u s e r r o l e b a 一 口 | = 。 t l 一 j ! e 一p o w e r 口m r 日一q 恻3 _ 5 权限系统数据库设训 每一个数据表中都包台i d 作为逻辑土键,还包括t i m e s t a m p 用于并发访 问控制。1 1 m e s t a m p 配合l i n qt os q l 使用就n r 以实现乐观锁功能。 数据库表格的详细信息见袁3 - 1 ,3 - 2 ,3 - 3 : 袁3 ,i 崩户角色 字段名数据类型k 鹰土键可空描述 册4是否逻辑主键 2 5 5 否是用户角色名称 t y p e i n f否否 坩户角色类型,对应u s e r r o l e t y p e 枚芈 4古台对应权限的外键1 d t i m e s f a m 08否否时间戳 用户角色衷中涉及权艘的主要是p o w e d d ,它引用了一个指向p o w e r 表的 外键,且该外键不可空,这表示任何一个用户角色,都必须拥有其对应的权限。 一 o r m 构架下的权限管理系统研究与实现 表3 2 用户 字段名数据类型长度主键可空描述 i di n 4 是 否逻辑主键 u s e r r o l e l di n t 4 否 否 用户对应的角色的i d l o g i n l d n v a r c h a r2 5 5否 否 登陆名 n a m en v a r c h a r2 5 5否否用户名 n a m e s p e u n v a r c h a r2 5 5否否 用户名拼音首字母缩写 p a s s w o r dn v a r c h a r2 5 5否 否 用户登录密码 e m a i ln v a r c h a r2 5 5否否用户e m a i l 0 f f i c e p h o n en v a r c h a r 2 5 5否否 办公电话 h o m e p h o n en v a r c h a r 2 5 5否否 家庭电话 m o b i l ep h o n en v a r c h a r2 5 5否否移动电话 f a xn v a r c h a r2 5 5否否传真 i s s u p e r b i t 1否否 是否超级管理员 a i i o w m u l t i l o g i n b 计1否 否 是否允许多人登陆 i s c u s t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论