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

下载本文档

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

文档简介

1、扩展 RBAC 用户角色权限设计方案RBA(C Role-Based Access Control ,基于角色的访问控制) ,就是用户通过角色与权限进行关联。 简单地说, 一个用户拥有若干角色, 每一个角色拥有若干权限。这样,就构造成“用户 - 角色- 权限”的授权模型。在这种模型中,用户与角色之间,角色与权限之间,一 般者是多对多的关系。(如下图)角色是什么?可以理解为一定数量的权限的集合,权限的载体。例如:一个论坛系统,“超级管理员”、“版主”都是角色。版主可管理版内的帖子、可管理版内的用户等,这些是权限。要给某个用户授予这些权限,不需要直接将权限授予用户,可将“版主”这个 角色赋予该用户

2、。当用户的数量非常大时,要给系统每个用户逐一授权(授角色),是件非常烦琐的事情。这时,就需要给用户分组,每个用户组内有 多个用户。除了可给用户授权外,还可以给用户组授权。这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用 户组拥有的权限之和。(下图为用户组、用户与角色三者的关联关系)用尸组用尸组IDNUMBER用尸组名称VlRCHilR2 (50)兌用户疽茗称NVWBEN(:引入用户鈕)- 角色在应用系统中,权限表现成什么?对功能模块的操作,对上传文件的删改,菜单的访问,甚至页面上某个按钮、某个图片的可见性控制,都可属于权限的范畴。有些权限设计,会把功能操作作为一类,而把文件、

3、菜单、页面元素等作为另一类,这样构成“用户- 权限- 资源”的授权模型。而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便 捷性和易扩展性。(见下图)菜单表NVNBER菜单名称VARCKAR2G0) 萊单URL 父菜单VARCKAR2C80)KIMBERFK PF1 EEF MEinr页面元索贡両元 页页元索编码ISO)文件表文ffi:II丽BER 3文件名 VARCHW2 (50)文件路径VARCHXR2 (S0)权限菜单关联表权限D NUMBER 菜单ID NUMBER FK_PM JtfKL 11淨E_REFRI V席.翻比卩陋匹住他权服表协阪

4、WMBER枫限类型YAICHAB2 60)功能操作義操作名称 操作编码 拦截VH前竦 父操作EDWWERVAICHAB2 (50) mCHAJGO) TOCHAH2 (80) 1PJWEERERATION权限操作关联表权 EglD NWBERfldS撫作ID NUWBER 2(閨;权限分类)请留意权限表中有一列“权限类型”,我们根据它的取值来区分是哪一类权限,如“MEN”U 表示菜单的访问权限、“ OPERATIO”N表示功能模块的操作权限、“ FILE”表示文件的修改权限、“ ELEMEN”T表示页面元素的可见性控制等。这样设计的好处有二。其一,不需要区分哪些是权限操作,哪些是资源,(实际上

5、,有时候也不好区分,如菜单,把它理解为资源呢 还是功能模块权限呢?) 。其二,方便扩展,当系统要对新的东西进行权限控制时, 我只需要建立一个新的关联表“权限 XX关联表”, 并确定这类权限的权限类型字符串。这里要注意的是,权限表与权限菜单关联表、 权限菜单关联表与菜单表都是一对一的关系。 (文件、页面权限点、 功能操作等同理) 也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联, 此时,须在权限表中新增一列用来保存菜单的 ID,权限表通过“权限类型”和这个 ID 来区分是种类型下的哪条记录。到这里, RBAC权限模型的扩展模型的完

6、整设计图如下:用尸组用戶爼IDHUMBERGk用尸组名称VkRCHAR2 (SO)父用尸组名称NUMBER/r GROUP菜单表菜宜 D HUHBER 英罚名称VARCKAR2 (30) 乗車URLVARC(AR2 (80)父菜单ED NUMBER页面元索页面元素IDNUMBER一 Gk页面元索漏玛YARCHAR2 (50:文件表文用i NUMBER文件名 VARCHAR2 (50) 文件路径VARCHAR2 (80)GROUPFKFK PE REF ELEMENTTK PFF FILE用戶组与用戶关联裘权限菜单关联表权限页面元素关联表权限文件关联表用 P10ID2 HUMBER 用户H)2

7、HUMBER 用户姐ID NUMBER 角色TD NUMBER 权限ID NUMBER 亲单IE NUMDEB 权限ID NUMBER 页畜亢紊ID KIMBER 权限ID TIMBER 文件ID NUMBER F5_REF_USER用戶表用戶ID RVMBER用戶名 VARCHAR2(30)F USERF ROLEROLEFKHUMBERVARCHAR2 (30)FKJM_RIRIVIIKG5)E_RIFZpRIvff-REFnLEGEXI用戶角色关联表用户ID HUMBER 角色ID HUMBER 角色表权限表权喷 D NUMBER权限类型VARCHAR2 (50)功能操作表称 操作编码

8、拦截TJR谕缀 父操作IDNUMBERVARCHAR2 GO)VAECHAR2 (50)VAECHAR2 (80) NUMBERFRP_RE 比血IVILEGE角色权限关联表权眼樣作关联表角色ID 1TUMBER 权PRlD 1RIMBER 枳卩Rid humbek 撫fto HUMBER 因:RBAC枚限模型扩展)随着系统的日益庞大,为了方便管理,可引入角色组对角色进行分类管理,跟用户组不同,角色组不参与授权。例如:某电网系统的 权限管理模块中,角色就是挂在区局下,而区局在这里可当作角色组,它不参于权限分配。另外,为方便上面各主表自身的管理与查 找,可采用树型结构,如菜单树、功能树等,当然这

9、些可不需要参于权限分配。以上,是从基本的 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 = MENUand pm.menu_id = m.menu_idand exists(select Xfrom role_privilege rpwhere rp.privi

温馨提示

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

评论

0/150

提交评论