引言
权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统的权限进行设计,以满足不同系统用户的需求,将会浪费我们不少宝贵时间,所以花时间来设计一个相对通用的权限系统是很有意义的。
相关对象及其关系
相关对象及其关系权限
系统的所有权限信息。权限具有上下级关系,是一个树状的结构。下面来看一个例子:
系统管理
用户管理
查看用户
新增用户
修改用户
删除用户
对于上面的每个权限,又存在两种情况,一个是只是可访问,另一种是可授权,例如对于“查看用户”这个权限,如果用户只被授予“可访问”,那么他就不能将他所具有的这个权限分配给其他人。
用户
应用系统的具体操作者,用户可以自己拥有权限信息,可以归属于0~n个角色,可属于0~n个组。他的权限集是自身具有的权限、所属的各角色具有的权限、所属的各组具有的权限的合集。它与权限、角色、组之间的关系都是n对n的关系。
角色
为了对许多拥有相似权限的用户进行分类管理,定义了角色的概念,例如系统管理员、管理员、用户、访客等角色。角色具有上下级关系,可以形成树状视图,父级角色的权限是自身及它的所有子角色的权限的综合。父级角色的用户、父级角色的组同理可推。
组
为了更好地管理用户,对用户进行分组归类,简称为用户分组。组也具有上下级关系,可以形成树状视图。在实际情况中,我们知道,组也可以具有自己的角色信息、权限信息。这让我想到我们的QQ用户群,一个群可以有多个用户,一个用户也可以加入多个群。每个群具有自己的权限信息。例如查看群共享。QQ群也可以具有自己的角色信息,例如普通群、高级群等。
组与角色的区别与联系
用户组UserGroup:是相对垂直而言的。比如说采购部这个用户组实际上是由采购部的业务员(暂且定义都为用户)组成的,具有上下级的明确关系;采购部只能查看属于采购部的文档,销售部只能查看属于销售部的文档,带有强烈的部门(组)性质,但是采购部业务员虽然都是属于同一个部门,但是却不一定有着相同的权限,比如说经理和一般业务员的权限肯定存在差异。
角色Role:用户组是带有一种垂直既自上而下的性质,而角色的范围则没有带着那么浓厚的垂直关系,而是带有比较明显的水平(交叉)性质;比方说现定义一个角色:经理,这个经理包含了各个部门的经理,而不单单是采购部经理或者是销售部经理,很明显这个‘经理’角色显然同时具有各部门的经理的权限,也就是说这时候如果各部门经理们只是处于该‘经理’角色,那么采购部经理不但具有采购部经理的操作权限,同时也被赋予了其他各部门经理的权限,这个时候各个部门经理的权限是一致的,但是这样势必造成权限的拥堵或者混乱,此时刚才提到的第一个对象:用户就派上用场了,几个部门经理同属于‘经理’角色情况下又想他们之间的权限有区别,你只能对每个部门经理(身份为:用户)单独授权了,当然你也可以根据该用户身处的用户组和角色之间的关联关系或者排斥关系来确认用户的最终权限。
网友评论