一个权限管理模块的设计
by
at 2010-10-12 16:52:25
original http://www.javaeye.com/topic/782709
1. 权限资源(功能资源)
系统的所有权限信息。权限具有上下级关系,是一个树状的结构。如下:
<!--[if !supportLists]-->u <!--[endif]-->系统管理
<!--[if !supportLists]-->l <!--[endif]-->单位管理
<!--[if !supportLists]-->u <!--[endif]-->查看单位
<!--[if !supportLists]-->u <!--[endif]-->添加单位
<!--[if !supportLists]-->u <!--[endif]-->修改单位
<!--[if !supportLists]-->u <!--[endif]-->删除单位
<!--[if !supportLists]-->l <!--[endif]-->部门管理
<!--[if !supportLists]-->u <!--[endif]-->查看部门
<!--[if !supportLists]-->u <!--[endif]-->添加部门
<!--[if !supportLists]-->u <!--[endif]-->修改单位
<!--[if !supportLists]-->u <!--[endif]-->删除单位
对于每个权限,又存在两种情况:1可访问;2可授权,部分表中采用拥有类型做判断(0可访问,1即可访问也可授权)
2. 用户
系统的具体操作者,用户可以自己拥有权限信息,可以归属于0~n个角色,可属于0~n个组。他的权限集是自身具有的权限+所属的各角色具有的权限+所属的各组具有的权限的合集。它与权限、角色、组之间的关系都是n对n的关系。
3. 角色
为了对拥有相似权限的用户进行分类管理,因此定义角色,例如:超级管理员,一般管理员、一般用户等角色。在这里同时也让角色具有上下级关系,形成树状视图,父级角色的权限是自身及它的所有子角色的权限的综合。
4. 组
为了更好地管理用户,对用户进行分组归类,简称为用户分组。组也具有上下级关系,可以形成树状视图。在实际应用中,我们知道,组也可以具有自己的角色信息、权限信息。
就好比是javaeye中的圈子,一个圈子可以拥有多个会员,同时一个会员也可以加入多个圈子,对于不同的圈子又有不同的权限信息。(组的解释:例如一个公司中,不同的部门即可划分不同的组来进行权限的分配)
针对以上描述,结构关系如下:
整个模块分为组权限管理、角色权限管理、用户权限管理。
其中组权限管理:组权限 = 所属角色的权限合集 + 组自身的权限。
角色权限管理:角色权限 = 角色自身权限。
用户权限管理:用户权限 = 所属角色权限合集 + 所属组权限合集 + 用户自身权限。
注意:因为组和角色都具有上下级关系,所以下级的组或角色的权限只能在自己的直属上级的权限中选择,下级的组或者角色的总的权限都不能大于直属上级的总权限。
欢迎大家拍砖,给点建议。
<br><br>
作者: <a href="http://chenyunhong.javaeye.com">chenyunhong</a>
<br>
声明: 本文系JavaEye网站发布的原创文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
<br><br>
<span style="color:red">
<a href="http://www.javaeye.com/topic/782709" style="color:red">已有 <strong>0</strong> 人发表回复,猛击->><strong>这里</strong><<-参与讨论</a>
</span>
<br><br><br>
JavaEye推荐