目前,大多数权限系统,都是基于RBAC的理念来设计的,关于RBAC,摘抄一下百度百科的解释:
在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而 得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以 很容易地从一个角色被指派到另一个角色。角色可依新的需求和系统的合并而赋予新的权限,而权限也可根据需要而从某角色中回收。角色与角色的关系可以建立起 来以囊括更广泛的客观情况。
http://baike.baidu.com/link?url=vS4hKX1RrOgUUO325gBs_VdhDFCc4d07-6fqvu19bDWnE8Ljy_2ema98BA8LlQBBd-mnFzzix-CaTv1_0avfD_
简而言之:具体操作时,在系统中创建一个角色,给角色添加人,给角色授予操作权限,那么这些人就具有了这些操作权限,在应用中判断的时候最终应该是判断某个人是否有某个权限(关于权限的最终判断,可参考这篇文章http://www.cnblogs.com/hnsongbiao/p/5087359.html),
一、给用户授权
实际应用中,完全基于RBAC可能并不满足需求,就比如 Windows 虽然有 管理员组 / 普通用户组 / 来宾组之分,但它的私人文件夹还是会按用户的权限进行分配,而不会为了某一用户增加一个角色,那么在通用的权限管理系统中如何实现呢,先看下界面
给指定的用户授予权限,右边的子系统,表示是给该用户授予这个系统的操作权限,点击上面的用户按钮,弹出授权页面,选中后保存,用户就具有选中的操作权限了,见下图:
二、给角色授权
角色权限配置是权限系统必备的,主要功能就是创建角色,向角色中添加人(或者给人设置角色),给角色配置操作权限,
给人设置角色,在第一个页面中也可以实现,如下图
角色权限管理中也可以为角色添加人,
上面是为角色添加人或为人设置角色的方法。
现在,再看看如何给角色设置操作权限,角色的操作权限也就是角色里的人的操作权限。
设置及保存用户的操作权限,操作权限可能是一个地址,也有可能是一个按钮,下图:
在界面上选中操作权限保存,这样角色就具有了对应的操作权限了。
在具体应用中,判断用户操作权限时,应该先获取给用户单独设置的权限,以及用户的角色具有的权限,两者取并集,大部分权限系统只做到按角色的权限判断。
通过这个方式,我们实现了按人设置权限,及按角色设置权限,满足系统中的一些特殊需求。
大多数情况下,用户(User)、角色(Role)、操作权限(Permission),三者之间的关系,可以把角色看做一个个容器,这个容器里有很多用户,有很多操作权限,用户和操作权限之间是多对多的关系,用户通过角色与操作权限关联起来,某些情况,也要求用户不通过角色,直接与操作权限关联,通用权限管理系统就可以解决这类需求。
用户始终是授权的主体,片面上说,有了角色,实际上就为很多人同时授权提供了方便,但是不应该因为有了角色,给用户授权就必须要创建一个角色,那样就不太灵活了。