欢迎来到天天文库
浏览记录
ID:46129784
大小:215.95 KB
页数:31页
时间:2019-11-21
《权限管理_免费下载》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、高级权限管理系统的设计2008-05-3116:40:15
2、分类:
3、字号订阅--基于角色+模块的权限控制管理实现在任何系统屮,权限设计是最基础的东四,一个好的权限系统,可以为开发人员提高开发进度;而且,乂可以为用户提供完美的可扩展权限管理,而非简单的权限定制。本文实现功能:实现基于角色+模块+权限粒度的权限管理相关概念:(1)角色:是一类功能的集合,比如新闻编辑这个角色,他对能有起草新闻、编辑新闻等功能集介,而责任编辑他町能就有更多的权限,比如除了新闻编辑的功能,还有审核新闻、删除新闻等粒度级别操作;这个可以理解为程序设计中的组.(2)权限粒度:它是最小的单位,比如起草新闻、编辑新闻、审核新
4、闻、删除新闻等(3)用户:就是一个系统的最终使用用户(包括•管理人员和被管理人员)(4)资源:管理的对象下而模拟对一个信息系统的控制数据:(图一.权限示意图)用户信息表:UserIDUserNameU1张三U2李四I角色表:RolelDRoleNameR1新闻编辑R2责任编辑角色用户表:RolelDUserIDR1U1R2U2权限粒度表:PrivilegelDResourceTypePrivilegeTitleP1NTA起草新闻:分类AP2NTA编辑新闻:分类AP3NTA审核新闻:分类AP4NTA删除新闻:分类AP1NTB起草新闻:分类BP2NTB编辑新闻:分类BP3NTB审核新闻:分类BP
5、4NTB删除新闻:分类B注意:这个表里而添加有资源(模块)信息角色权限表:RolelDPrivilegelDR1P1R1P2R2P1R2P2R2P3R2P4判断-个用户具有某个模块权限实现:#获取权限(Privileges)的语句:SelectPrivilegelD++ResourceTypeFrom角色权限表WhereRolelDIn(SelectRolelDFrom用户角色表WhereUserlD=Ur)#权限的判断Privileges.Contain('F1,NTA');在新添加•个分类的吋候,同吋也在权限表中增加相应的记录(当然不是在数据库里面百接添加,由和权限相关的函数来添加)。使
6、用这种解决方案可以简单地对有分类的应用(比如论坛系统)的每个分类实行不同的控制(比如VIP板块,就只能拥HVIP角色的用户才能浏览、发表等,而其他板块只要是注册用户就可以使用了)。在实际应用中PrivilegelD并不是随便的一个字符串,而是进行了编码,其编码屮包含了模块ID以及能够体现出父子关系,举个例子來说:对于论坛系统,我们给它一个模块ID为”30”,论坛的权限我们先分成2类,一类是管理类(比如删除帖子),一类是使用类(比如发帖、回帖、浏览帖子等),给管理类一个编码:01,使用类一个编码:02,我们就对PrivilegelD进行如下的编码:300101:删除帖子300201:发帖300
7、202:回帖300203:浏览帖子对于资源(比如某个板块1,板块的ID为:01),我们可以组合出如下的Privileges(当然这个组合你也可以不用逗号分隔,用其他的组合力式也可以,不过不要产生歧义):300101,01:板块1删除帖子的功能300201,01:板块1发帖的功能对TRolelD也是采用的编码方式,也能体现角色的父子关系,也可以实现角色功能的继承等(曲然获取角色功能列表的SQL语句就不是现在这么简单了)。在我现在的应用里而没有实现角色的继承(虽然角色的编码体现出了角色的父子关系)。-个用户权限管理模块的设计思路:1.权限资源(功能资源)系统的所有权限信息。权限具有上下级关系,是
8、一个树状的结构。如下:系统管理单位管理杳看单位△丄endif〕;vAl亠i『一supporriss;v△丄cndifj;v粽&卞之Al亠if一supportLis7〒lv△丄endifj;v9S.△I亠if一supportLisis〕;v△丄endif〕;vss〈!■=『一supporrisslv查看部门
9、portLists]->添加部门修改单位删除单位对于每个权限,又存在两种情况:可访问;2可授权,部分表中采用拥冇类型做判断(0可访问,1即可访问也可授权)2.用户系统的具体操作者,用户可以自己拥有权限信息,可以归属于0个角色,可属于0n个组。他的权限集
此文档下载收益归作者所有