轉自:http://hi.baidu.com/circledong/blog/item/ec56e1101549cf79cb80c463.html
我们在开发系统的时候,经常会遇到系统需要权限控制,而权限的控制程度不同有不同的设计方案。
1.
这种方案是最常见也是比较简单的方案,不过通常有这种设计已经够了,所以微软就设计出这种方案的通用做法,这种方案对于每一个操作不做控制,只是在程序中根据角色对是否具有操作的权限进行控制;这里我们就不做详述
2.
这种模式下每一个操作都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录,结构如下:
但是如果直接使用上面的设计,会导致数据库中的UserAction
3.
如上图所示,我们在添加了Role
但是这种方案在用户需求的考验之下也可能显得不够灵活够用,例如当用户要求临时给某位普通员工某操作权限时,我们就需要新增加一种新的用户角色,但是这种用户角色是不必要的,因为它只是一种临时的角色,如果添加一种角色还需要在收回此普通员工权限时删除此角色,我们需要设计一种更合适的结构来满足用户对权限设置的要求。
4.
我们可以看到在上图中添加了UserAction
到这儿呢并不算完,有可能用户还会给出这样的需求:对于某一种action
5.
对于这样的需求我们就需要对每一种不同的资源创建一张权限表,在上图中对Content
6.
在这种设计下角色的概念已经