您的位置:首页 > 其它

第一章:权限管理设计基础——深入浅出学Shiro细粒度权限开发框架

2017-03-19 00:00 387 查看
n为了让大家更好的理解后面讲述的知识,先介绍一点权限系统的基础知识:

几乎所有的权限系统都分成两个部分,一个是分配权限部分,一个是验证权限部分,为了理解它们,首先解释两个基本的名词:安全实体和权限。

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

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

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

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

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

所谓分配权限是指:把对某些安全实体的某些权限分配给某些人员的过程。

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

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

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

n

n权限的继承性指的是:如果多个安全实体存在包含关系,而某个安全实体没有相应的权限限制,那么它会继承包含它的安全实体的相应权限。

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

n权限的最近匹配原则指的是:如果多个安全实体存在包含关系,而某个安全实体没有相应的权限限制,那么它会向上寻找并匹配相应权限限制,直到找到一个离这个安全实体最近的拥有相应权限限制的安全实体为止。如果把整个层次结构都寻找完了都没有匹配到相应权限限制的话,那就说明所有人对这个安全实体都拥有这个相应的权限限制。

继续上面权限继承性的例子,如果现在这个大楼是坐落在某个机关大院内,这就演变成了,要进入某个房间,首先要有进入大楼的权限,要进入大楼又需要有能进入机关大院的权限。

所谓最近匹配原则就是,如果某个房间没有门,也就意味着这个房间没有进入的权限限制,那么它就会向上继续寻找并匹配,看看大楼有没有进入的权限限制,如果有就使用这个权限限制,终止寻找;如果没有,继续向上寻找,直到找到一个匹配的为止。如果最后大院也没有进入的权限限制,那就变成所有人都可以进入到这个房间里面来了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: