Go to my github

常见模块设计--权限管理(二)

权限设计:基于角色的权限设计


这种方案是最常见也是比较简单的方案,不过通常有这种设计已经够了,所以微软就设计出这种方案的通用做法,这种方案对于每一个操作不做控制,只是在程序中根据角色对是否具有操作的权限进行控制;这里我们就不做详述

 

权限设计:基于操作的权限设计


 

这种模式下每一个操作都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录,结构如下:

 

 

3.       基于角色和操作的权限设计


 

 

4. 2,3组合的权限设计,其结构如下:


 


我们可以看到在上图中添加了
UserAction表,使用此表来添加特殊用户的权限,改表中有一个字段HasPermission可以决定用户是否有某种操作的权限,改表中记录的权限的优先级要高于UserRole中记录的用户权限。这样在应用程序中我们就需要通过UserRoleUserAction两张表中的记录判断权限。

到这儿呢并不算完,有可能用户还会给出这样的需求:对于某一种action所操作的对象某一些记录会有权限,而对于其他的记录没有权限,比如说一个内容管理系统,对于某一些频道某个用户有修改的权限,而对于另外一些频道没有修改的权限,这时候我们需要设计更复杂的权限机制。


 

原文地址:http://www.cnblogs.com/yukaizhao/archive/2007/04/15/user_role_action_permission.html

 

posted @ 2011-03-23 14:57  峡谷少爷  阅读(793)  评论(0编辑  收藏  举报