RBAC用户角色权限设计方案非常好.docx
- 文档编号:25089088
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:8
- 大小:334.47KB
RBAC用户角色权限设计方案非常好.docx
《RBAC用户角色权限设计方案非常好.docx》由会员分享,可在线阅读,更多相关《RBAC用户角色权限设计方案非常好.docx(8页珍藏版)》请在冰豆网上搜索。
RBAC用户角色权限设计方案非常好
扩展RBAC用户角色权限设计方案
RBAC(Role-BasedAccessControl,基于角色的访问控制),就是用户通过角色与权限进行关联。
简单地说,一个用户拥有若干
角色,每一个角色拥有若干权限。
这样,就构造成“用户-角色-权限”的授权模型。
在这种模型中,用户与角色之间,角色与权限之
间,一般者是多对多的关系。
(如下图)
角色是什么?
可以理解为一定数量的权限的集合,权限的载体。
例如:
一个论坛系统,“超级管理员”、“版主”都是角色。
版主可管理版内的帖子、可管理版内的用户等,这些是权限。
要给某个用户授予这些权限,不需要直接将权限授予用户,可将“版主”这个角色赋予该用户。
当用户的数量非常大时,要给系统每个用户逐一授权(授角色),是件非常烦琐的事情。
这时,就需要给用户分组,每个用户组内有多个用户。
除了可给用户授权外,还可以给用户组授权。
这样一来,用户拥有的所有权限,就是用户个人拥有的权限与该用户所在用
户组拥有的权限之和。
(下图为用户组、用户与角色三者的关联关系)
用户亀
用,口?
血IF
用尸廻名称则G01
敦用户绢茗称imiEEH
用尸角色关联表
SPTBmBER<£kl>角色IE™0EIt<£k2>
【閘;可人甲户朗)
在应用系统中,权限表现成什么?
对功能模块的操作,对上传文件的删改,菜单的访问,甚至页面上某个按钮、某个图片的可见性控
-角色
制,都可属于权限的范畴。
有些权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等作为另一类,这样构成“用户
-权限-资源”的授权模型。
而在做数据表建模时,可把功能操作和资源统一管理,也就是都直接与权限表进行关联,这样可能更具便
捷性和易扩展性。
(见下图)
FK_PO_REFPRIVILEGE
---■FKPt)
-
v
枷艮操作关联叢Wfcrtobeb<£ki>操作IDOMBEK (图: 权限分类) 请留意权限表中有一列“权限类型”,我们根据它的取值来区分是哪一类权限,如“MENU”表示菜单的访问权限、“OPERATION” 表示功能模块的操作权限、“FILE'表示文件的修改权限、“ELEMENT'表示页面元素的可见性控制等。 这样设计的好处有二。 其一,不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把它理解为资源呢 还是功能模块权限呢? )。 其二,方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表“权限XX关联表”,并确定这类权限的权限类型字符串。 这里要注意的是,权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。 (文件、页面权限点、功能操作等同理)。 也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。 这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联, 此时,须在权限表中新增一列用来保存菜单的ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。 到这里,RBAC权限模型的扩展模型的完整设计图如下: .专业 用尸組 IWBEJ 用尸朗居称交用尸爼名称 VAICHAS2③时 NUWBEE 粟单表 吗戶嵋与用戶关联衰 用户组I疋ffUMBEE £> 用户舉 用尸]: DHUMEO用户名YABCKAK2(30} .USER 魁暫D菠車容称英单血 父菜車D HTOEFmCHAE2C30)raciwcBoiwm 贡面无索ID阿仍ER 页面元素編码¥AECHAf送吁口 DUMBER 文■井IUlfWER 文件名VABCHAK2i50)文件蹄径VAFCHAR2(80) GEDUF 用户姐龟色关離恚 根限棄单其联養 FKPE EI2MEHT FKPF FILE 权限丈件来联表 用户纽DHUMBER 按眼IDNUMBER 权取ID1RHBEE 枷Bidsrjnber 箱色恚 // F^Rivnffi&ff,E_REF^_PRiyf^? ~EtEr护巩口尿 毎切职喷ERGk> 毎冃名VAECHAB2(30) fK_RF_ftEF. 用尸角色天联表 ffiRnMBER<£kl>角色IDNUMBER .kolefkRFEET 嵌限表 权BRjDHUMBER 权跟类型VABCKAE2(50) PRIVILEGEFK_F「Ak RinLEOEFKPO <图: RBM权限模型扩展) 為fclD 燥作名秫 操作骗码 拦截VBL前竦父操恒! ) HUMBER VARCHKR2(SCO mcmzGaj VAKCHXB2(80) HUMBER ERATION 杈R曲: DNUMBER<£kl>操伯DNUMBER<£k2> 随着系统的日益庞大,为了方便管理,可引入角色组对角色进行分类管理,跟用户组不同,角色组不参与授权。 例如: 某电网系统的权限管理模块中,角色就是挂在区局下,而区局在这里可当作角色组,它不参于权限分配。 另外,为方便上面各主表自身的管理与查找,可采用树型结构,如菜单树、功能树等,当然这些可不需要参于权限分配。 以上,是从基本的RBAC模型进行了扩展,具体的设计要根据项目业务的需要作调整。 欢迎大家提出批评意见! 这是我后面加的: 具体实现的话,可通过表的关联查询得到,根据用户ID查询到它拥有的角色,再通过角色查询到它所拥有的权限。 例如,查询某个用户所有授权的菜单: selectm.*frommenum whereexists(select'X'fromprivilege_menupm,privilegeepwherepm.privilege_id=p.privilege」d andp.privilege_type='MENU' andpm.menu」d=m.menu」d andexists (selectX fromrole_privilegerp whererp.privilege_id=pm.privilege_id andexists(select'X' fromuser_roleur whereur.role_id=rp.role_id andur.user_id=? ))) 其它的类似,在用户登录到系统中,将这些信息查询一次,加载到内存中就行。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- RBAC 用户 角色 权限 设计方案 非常好