北漂IT民工 的博客

对权限管理系统的一些思考

权限系统的设计看上去是一个比较复杂的设计。目前还没有非常明确并取得共识的系统设计方案。

下面主要是根据我对权限管理系统的理解进行一个系统设计方案的分析。

首先,权限的设置是围绕着人展开的,而人可以分成多种角色,而这些角色可以是位于不同的组织内。

这样我们就可以很自然感觉到:人,角色,组织都是跟权限相关的。

我们再进一步的思考,会发现一个权限系统主要考查的问题是:

谁在什么地方,对什么东西进行了什么操作。 (如果更复杂的话,还可以包含时限信息,等其它前件)


因为主要考虑的是人可以做什么,所以主要的包括的点是这几个。

简单一下,要点是四个: 谁, 地方, 东西, 操作。

所以我们要分析这些要件分别可能是什么,并且他们之间是什么关系。

谁,是一个执行者,那可能是一个用户,一个管理员,一个后台的编辑,也可能是一个特定的人群。因些谁我们至少可以用:用户,角色,组来将他们表示出来。

而用户可以用组与角色来组织起来。假设组是一种树状的垂直组织,那么角色就可以是一种平面的组织。因此他们是有必要共存的一种用户分类方式。


那么这些用户相关的分类应该如何组织起来的呢?


就是涉及到了一些功能性的模块系统,比如用户管理系统,组织架构管理系统,员工管理系统。


通过组织架构管理系统,可以将用户与某些组织有效的组织起来。

但是一旦到了一个系统中,那么就必须要有一个资源的分配权限。


而资源一般都是跟一些结构,频道之类的东西相关的。


比如在组织架构管理系统里,组织本身就是一个资源,他包含创建,删除,更新组织的基本功能,还需要包含添加组成员,组长,副组长都角色的功能。


而这个组织本身又是这个组织结构的节点。


他本身会具有位置的信息,就是上面提到的地方的概念。


而组织的节点可以是一个人组成,也可以是一些角色组织。


如果管理层可能包含CEO,CFO,COO等等,只要给定了这个组织下的角色权限,那么不管指定谁是CEO,他就会具有CEO的权力。


所以我们可以得出来对于权限的管理,至少应该得到下面的几项关键数据:

组织架构/模块, 组织架构/模块的节点, 用户/角色, 用户/角色的标志符, 资源的类型, 资源的标志, 资源的动作标识


那么对应的,组织架构及其节点是我们所说的地方,用户/角色是我们所说的人,资源就是东西,动作标识是干什么。


这样就基本上定义了一个权限。


通过这种形式对权限进行组织,可以实现一个组织下,用户的权限非常细致的控制。


当然实现起来也会相对比较麻烦。


因为权限还会有一定的承继关系,用户,角色,组织权限的优先级关系,都会涉及到。


一般情况下,只要对一个用户设定组权限就可以了。


但是通过角色或者用户的特有权限设置,可以达到很精确的控制。