一个权限管理模块的设计(转载)

一 个用户权限管理模块的设计思路:

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. 用 户

系统的具体操作者,用户可以自己拥有权限信息,可以归属于0n个角色,可属于0n个组。他的权限集是自身具有的权限+所属的各角色具有 的权限+所属的各组具有的权限的合集。它与权限、角色、组之间的关系都是nn的关系。

 

3. 角 色

为了对拥有相似权限的用户进行分类管理,因此定义角色,例如:超级管理员,一般管理员、一般用户等角色。在这里同时也让角色具有上下级 关系,形成树状视图,父级角色的权限是自身及它的所有子角色的权限的综合。

 

4.

为了更好地管理用户,对用户进行分组归类,简称为用户分组。组也具有上下级关系,可以形成树状视图。在实际应用中,我们知道,组也可以具有自 己的角色信息、 权限信息。

就好比是javaeye中的圈子,一个圈子可以拥有多个会员,同时一个会员也可 以加入多个圈子,对于不同的圈子又有不同的权限信息。(组的解释:例如一个公司中,不同的部门即可 划分不同的组来进行权限的分配)

 

针对以上描 述,结构关系如下:


一个权限管理模块的设计 - qiuguangchun - sandea的个人主页
 

 

整个模块分为组权限管理、角色权限管理、用户权限管理。

其中组权限管理:组权限 = 所属角色的权限合集 + 组自身的权限。

角色权限管理:角色权限 = 角色自身权限。

用户权限管理:用户权限 = 所属角色权限合集 + 所属组权限合集 + 用户自身权限。

 

注意:因为组和角色都具有上下级关系,所以下级的组或角色的权限只 能在自己的直属上级的权限中选择,下级的组或者角色的总的权限都不能大于直属上级的总权限。

 


原文地址:https://www.cnblogs.com/sandea/p/3295273.html