首页 > 代码库 > Shiro权限设计基础-权限和验证

Shiro权限设计基础-权限和验证

安全实体就是被权限系统保护的对象,比如工资数据。

权限就是需要被校验的权限对象,比如查看、修改等。

 

n安全实体和权限通常要一起描述才有意义:

         比如有这么个描述:“现在要检测登录人员对工资数据是否有查看的权限”, “工资数据”这个安全实体和“查看”这个权限一定要一起描述。如果只出现安全实体描述,那就变成这样:“现在要检测登录人员对工资数据”,对工资数据干什 么呀,没有后半截,一看就知道不完整;当然只有权限描述也不行,那就变成:“现在要检测登录人员是否有查看的权限”,对谁的查看权限啊,也不完整。所以安 全实体和权限通常要一起描述。

 

n了解了上面两个名词,来看看什么是分配权限和验证权限:

       所谓分配权限是指:把对某些安全实体的某些权限分配给某些人员的过程;而验证权限是指:判断某个人员或程序对某个安全实体是否拥有某个或某些权限的过程。

       也就是说,分配权限过程即是权限的分配过程,而验证权限过程则是权限的匹配过程。在目前应用系统的开发中,多数是利用数据库来存放授权过程产生的数据,也 就是说:分配权限是向数据库里面添加数据、或是维护数据的过程,而验证权限过程就变成了从数据库中获取相应数据进行匹配的过程了。

 

n再来介绍一下验证权限涉及到的两个名词:


1、n权限的继承性

        如果多个安全实体存在包含关系,而某个安全实体没有相应的权限限制,那么它会继承包含它的安全实体的相应权限。 比如:某个大楼和楼内的房间都是安全实体,很明显大楼这个安全实体会包含楼内的房间这些安全实体,可以认为大楼是楼内房间的父级实体。现在来考虑一个具体 的权限——进入某个房间的权限。如果这个房间没有门,也就是谁都可以进入,相当于这个房间对应的安全实体,没有进入房间的权限限制,那么是不是说所有的人 都可以进入这个房间呢?当然不是,某人能进入这个房间的前提是:这个人要有权限进入这个大楼,也就是说,这个时候房间这个安全实体,它本身没有进入权限的 限制,但是它会继承父级安全实体的进入权限。

2、n权限的最近匹配原则

       如果多个安全实体存在包含关系,而某个安全实体没有相应的权限限制,那么它会向上寻找并匹配相应权限限制,直到找到一个离这 个安全实体最近的拥有相应权限限制的安全实体为止。如果把整个层次结构都寻找完了都没有匹配到相应权限限制的话,那就说明所有人对这个安全实体都拥有这个 相应的权限限制。  继续上面权限继承性的例子,如果现在这个大楼是坐落在某个机关大院内,这就演变成了,要进入某个房间,首先要有进入大楼的权限,要进入大楼又需要有能进入机关大院的权限。

       所谓最近匹配原则就是,如果某个房间没有门,也就意味着这个房间没有进入的权限限制,那么它就会向上继续寻找并匹配,看看大楼有没有进入的权限限制,如果 有就使用这个权限限制,终止寻找;如果没有,继续向上寻找,直到找到一个匹配的为止。如果最后大院也没有进入的权限限制,那就变成所有人都可以进入到这个 房间里面来了。 

私塾在线原创,转载请注明http://sishuok.com/forum/blogPost/list/0/7450.html


Shiro权限设计基础-权限和验证