《中台权限管理模块设计》由会员分享,可在线阅读,更多相关《中台权限管理模块设计(13页珍藏版)》请在金锄头文库上搜索。
1、中台权限管理模块设计我们比较常见的就是基于角色的访问控制,用户通过角色与权限进行关联。简单地说,一个 用户拥有多个角色,一个角色拥有多个权限。这样,就构造成“用户-角色-权限”的授权模 型。在这种模型中,用户与角色 之间、角色与权限之间,通常都是多对多的关系。如下 图:基于这个,得先了解角色到底是什么?我们可以理解它为一定数量的权限的集合,是一个权 限的载体。例如:一个论坛的“管理员”、“版主”,它们都是角色。但是所能做的事情是不完全一样 的,版主只能管理版内的贴子,用户等,而这些都是属于权限,如果想要给某个用户授予这 些权限,不用直接将权限授予用户,只需将“版主”这个角色赋予该用户即可。但是
2、通过上面我们也发现问题了,如果用户的数量非常大的时候,就需要给系统的每一个用 户逐一授权(分配角色),这是件非常繁琐的事情,这时就可以增加一个用户组,每个用户组 内有多个用户,除了给单个用户授权外,还可以给用户组授权,这样一来,通过一次授权, 就可以同时给多个用户授予相同的权限,而这时用户的所有权限就是用户个人拥有的权限与 该用户所在组所拥有的权限之和。用户组、用户与角色三者的关联关系如下图:UserGroup_RoleRoleUsei_RcleID MBERtS, 0) Userl.d;叭胭脈徐Q)Eoleld NlOEJ-fe 0)冒 ID 1TUHKE班 C)UserGroupId ME
3、ER-, ?Userid NUMBER血 0;冒 ID MBZEf.6, O UserGroupIi MBfRfS, Roleld NUMBEE )管 H): KWBER Ci) ffame : VAECKM2(3tf)*5 ID: MBER(6? /UserWame : VAHCHAB2(20)5)ID NUTTER(6, 0).BoleHame: VAECHAE2(30)通常在应用系统里面的权限我们把它表现为菜单的访问(页面级)、功能模块的操作(功能 级)、文件上传的删改,甚至页面上某个按钮、图片是否可见等等都属于权限的范畴。有些 权限设计,会把功能操作作为一类,而把文件、菜单、页面元素等
4、作为另一类,这样构成 “用户-角色-权限-资源”的授权模型。而在做数据表建模时,可把功能操作和资源统一管 理,也就是都直接与权限表进行关联,这样可能更具便捷性和易扩展性。如下图:瑕“(文件狈呼第;W:-卅“- 陽-:-OpMionli -呼二.Opferl让鎖功龍康作)卩 HI 吧:- IDfMabiNOpertioUCodjiUwhl -.:-:C4Z IDMEER.ID - 1 FikKw* Ji1FitKID-Fo* fT 占: FiUliPort 袈限)f: 3ft - r.z -.r-tTyp* :也应1囲(弭】QTer_itB.v骨Ilf TUES画屈 fown-td KnulJ
5、!i :-.i;这里特别需要注意以下权限表中有一列“PowerType(权限类型)”,我们根据它的取值来区 分是哪一类权限,可以把它理解为一个枚举,如“ MENU ”表示菜单的访问权限、“OPERATION”表示功能模块的操作权限、“FILE”表示文件的修改权限、“ELEMENT”表示 页面元素的可见性控制等。这样设计的好处有两个:一、不需要区分哪些是权限操作,哪些是资源,(实际上,有时候也不好区分,如菜单,把 它理解为资源呢还是功能模块权限呢?);二、方便扩展,当系统要对新的东西进行权限控制时,我只需要建立一个新的关联表“权限XX 关联表”,并确定这类权限的权限类型字符串即可。需要注意的是,
6、权限表与权限菜单关联表、权限菜单关联表与菜单表都是一对一的关系。(文件、页面权限点、功能操作等同理)。也就是每添加一个菜单,就得同时往这三个表中各插入一条记录。这样,可以不需要权限菜单关联表,让权限表与菜单表直接关联,此时,须在权限表中新增一列用来保存菜单的ID,权限表通过“权限类型”和这个ID来区分是种类型下的哪条记录。最后扩展出来的模型完整设计如下图:TO)1Ifi JWEfJ- 陡凹M 只 Dsliii BBQUFst n E lnnnl (页曲元濫UjnGrciurp-.(r3erIn-faITlSElKfllKolcHui-r Kain誨圧踽J聲個MID IWDtUL怙IDfa AT
7、 Id- r 1冒It艸1頌厂厂g+W耳 I OXM 4 0$4wili.4d61 Ljqfl 和FuTBStld 11 -nim (華业)5 M- WMJQLQr cuTiImv ! 1: =!? ri 3Q KtraJUrl H. :Tu-I!:ldOf tit羅冷皿叭导 rfr_inidDi.- 呼苕时i M丹寸3 H号 i 亞 tai cd0|4f i MAJUFld MT* i mlTlh91ft HttrhifL |Hrirl4 gi*? ic! gXID - tw. IffTB外汕Towirld mCX/ . UF-n-irHi QVfir b1buyiBiwtwnTar.rll
8、VtaiwldK-u3 e: Piiiflcf注意上面我额外增加了一个操作日志表;随着系统的日益庞大,为了方便管理,如果有需要可引入角色组对角色进行分类管理,跟用 户组不同,角色组不参与授权。例如:当遇到有多个子公司,每个子公司下有多个部门,这是我们就可以把部门理解为角 色,子公司理解为角色组,角色组不参于权限分配。另外,为方便上面各主表自身的管理与 查找,可采用树型结构,如菜单树、功能树等,当然这些可不需要参于权限分配。数据字典: 1.用户表:2.角色表:用户信息表(U占毛rlEifo)字段合称字段备注用户BIDEntPK not nui用户容UserNameVarchar(20not nu
9、ll3.用户与角色关联表龟色表(Role)字段茗称字段备注电色IDIDIntPK not null电色名Role-NameVa rchar(30)not null4.用户组表用户与角色B(User_Role)字段名称字段类型备注IDIDIntPK not null用口】DUseridIntFK not euH命色9RoleldIntFK not nul 丨字段IDInt用户 .(UserGroup)字段名称备注可口组ID用户组舍PK not nullnot nullbserG roup NameVarchar(30;6.用户组与角色关联表用户组与用户信息关联表(UserGroupUseTlnf
10、o)字段窑称字段瞥注IDIDIntPK not nulf用户组IDUserGroupIdliltFK not HLiil用口吧UserfdIntFK not rtul 15.用户组与用户信息关联表番注IntInt用户組与角色 (UserGroupRole)IntPK not null字設名祿字段FK not nullFK not null用,口组IDUserGroupId毎色QRoleld7菜单表荣单表(何电rw)字段名称字段筲注IDIDIntPK not null菜单名擁MenuNaineVarchar(30)not nuNSURLMentiUrlVarcharflOOParentldIrr
11、t8.页面元素表贡面元養表(PageElement)字盍名称字段备注IDIDIntPK not null页面元素皙称PageEEementNameVa rchar(lOO)not null9.文件表文件 (File)字段类里备注IDDIntPK not nu弭交件宫称FileNameVarctiar(5O;not null丈件路径FilePathVarchar(LOO)11.权限与菜单关联表Power)字段名称字段1IDIDIntPK not null权隔类型PowerT/peVarchar(50not nuH10.权限表12.权限与页面元素关联表祝限与菜单关(Pouver_MenuJ字段容称字段备注IDIDEntPK not nuE权限IDPowerldEntFK not null春JDMenuldEntFK not null13.权限与文件关联表权限弓页面元素关联表(Power_Page)字段启称字段备注IE)EDEntPK not null权陨IDPow erldntFK not null页面元衰IDPageldI ntFK not null14.功能操作表权限与文件关 (Pouver_File)字奁名称字段IDDIntPK not null权圍口Powe ridIntFK not null文件IDFiieldIntFK not nullIDID