RBAC用户角色权限设计方案(非常好)_第1页
RBAC用户角色权限设计方案(非常好)_第2页
RBAC用户角色权限设计方案(非常好)_第3页
RBAC用户角色权限设计方案(非常好)_第4页
RBAC用户角色权限设计方案(非常好)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、扩展RBAC用户角色权限设计方案RBA(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户 -角色-权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一 般者是多对多的关系。(如下图)用户表权限表权眼W叩哑西<rk>1权限帝识 YAKCHAK2 60)角色名用户ID MEER <fkl> 吗色H TOBER <£12>角色TD KUMBEK <fkl> 枚限TOBER角色是什么?可以理解为一定

2、数量的权限的集合,权限的载体。例如:一个论坛系统,“超级管理员”、“版主”都是角色。版主可管理版内的帖子、可管理版内的用户等,这些是权限。要给某个用户授予这些权限,不需要直接将权限授予用户,可将“版主”这个 角色赋予该用户。当用户的数量非常大时,要给系统每个用户逐一授权(授角色),是件非常烦琐的事情。这时,就需要给用户分组,每个用户组内有 多个用户。除了可给用户授权外,还可以给用户组授权。这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用 户组拥有的权限之和。(下图为用户组、用户与角色三者的关联关系)用尸组用戶血NUMBER<pk>用尸组名称VkRCHAJl2(50

3、)父用戶组名称 MEER(的:引入用户爼)在应用系统中,权限表现成什么?对功能模块的操作,对上传文件的删改,菜单的访问,甚至页面上某个按钮、某个图片的可见性控- 角色制,都可属于权限的范畴。有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成“用户- 权限- 资源”的授权模型。而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便 捷性和易扩展性。(见下图)粟单表梵虹 KVHBERk>菜单名称VWRCKAR2C30) 莱单 URL VARCKAR2C80) 父苹車M IRIMBER页面元索RUBBER页面元素ID页両元索

4、漏码VABCHAKISO)<Bk>文件表文 DNLHBER文件名 VARCHAR2 (50) 文件輻径VARCHXR2 (30)权限菜单关联表PBirr NUMBER <£k2>菜单ID NUMBER <£kl>衩限页面元索关联表权限ID OMBER <fk2>页面元素ID OMBER <£kl>权限文件关联表权限ID NUMBER <fkl>文件ID NUMBER <£>2>I EH权限分类)请留意权限表中有一列“权限类型”,我们根据它的取值来区分是哪一类权限,如

5、“MEN”表示菜单的访问权限、“ OPERATION表示功能模块的操作权限、“ FILE”表示文件的修改权限、“ ELEMENT表示页面元素的可见性控制等。这样设计的好处有二。其一,不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把它理解为资源呢还是功能模块权限呢?)。其二,方便扩展,当系统要对新的东西进行权限控制时, 我只需要建立一个新的关联表“权限 XX关联表”, 并确定这类权限的权限类型字符串。这里要注意的是,权限表与权限菜单关联表、 权限菜单关联表与菜单表都是一对一的关系。 (文件、 页面权限点、 功能操作等同理) 也就是每添加一个菜单,就得同时往这三个表中各

6、插入一条记录。这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联, 此时,须在权限表中新增一列用来保存菜单的 ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。到这里,RBA(权限模型的扩展模型的完整设计图如下:菜单表用P组IDNUMBER<pk>用尸组名称VARCHAR2(50)父用尸组名称NUMBER一用尸组FK GRGROUP用户组与用戶关联表用户组IDZ HUMBER <fkl> 用户 TD2 NUMBER <f2>FK<U_R IF JJSER用戶表用戶ID XWBER<pk>用戶名 VARCHAR2(30)

7、F USER用户组角色关联表用户组ID NUMBER <fkl> 箱色ID HUMBER <fk2>FK GR RET ROLENUMBER<pk>VARCHAR2C30)FK URROLE用戶角色关联表fflPlD MV1BER <fkl> 角色EE NUMBER <£k2>角色表菜帧 HWER<Dk>菜单名称VARCHAR2 (30) 篥单IRL VARCHAR2 (80) 父菜单ID NUMBER页面元索页面元索IDNUMBER 5k贝面元索编玛VAHCHAR2 ©0)FK PM REF MEKV

8、权限棄单关联表权限ID NUMBER <£k2> 荣单ID 1IUMDER <fkl >文件表文用DNWEK文件名 VARCKM12(5O) 文件路径VARCHkR2(80)FK FEELEMEMTF FILEFK PF校限页面元素关联轰权限ED NINBER <fk2> 页击兀亲ID NUMBER. <fkl>权限ID NUMBER <fkl> 文件ID KVMBER <:竝FK_FM_RE 社"IVIIK企 E_REF_PRIVI礙JF 羽辻 7ILEGE /权服表权腋 DEMBER<pk>权

9、限类型VARCHKR2C50)角色权限关联表角色ID NUMBER <£kl> 叔匣ID NUMBER <£k2>功能操作表操作名称 操作編玛 拦戡URI前缀 父操作ID、FK FO REF PRIVILEGE 丄 FK PO REFjfPERATION、 /KUMBER<pk>VARCKAR2 (50)VARCKAR2 ($0)VARCKAR2 (80) NUIMBER权限按作关联表权限ID TOPER <fkl> 操作ID HUMBER <fk2>随着系统的日益庞大,为了方便管理,可引入角色组对角色进行分类管理

10、,跟用户组不同,角色组不参与授权。例如:某电网系统的 权限管理模块中,角色就是挂在区局下,而区局在这里可当作角色组,它不参于权限分配。另外,为方便上面各主表自身的管理与查 找,可采用树型结构,如菜单树、功能树等,当然这些可不需要参于权限分配。以上,是从基本的RBAC莫型进行了扩展,具体的设计要根据项目业务的需要作调整。欢迎大家提出批评意见!这是我后面加的:具体实现的话, 可通过表的关联查询得到, 根据用户 ID 查询到它拥有的角色, 再通过角色查询到它所拥有的权限。 例如, 查询某个用户所有授权的菜单: select m.* from menu mwhere exists (select 'X' from privilege_menu pm, privilegee p where pm.privilege_id = p.privilege_idand p.privilege_type = 'MENU'and pm.menu_id = m.menu_idand exists(select 'X'from role_privilege rpwh

温馨提示

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

评论

0/150

提交评论