今天对AA比较感兴趣,于是研究了一下,有点心得,写下来。
权限控制分为认证(authentication)和授权(authorization)。
认证部分很简单,只要在session里面放一个标志位就行了。
因为资源的复杂和多样性,授权才是权限控制的核心。
授权的本质是mapping一个user和资源之间的关系。
资源如果针对用户来分配是很麻烦的事情。
那么我们可以将资源分配到group和role。
那么在这个group里面的user或者扮演某个role的user就可以支配资源。
同理,将一个个的资源mapping到group或role也是不利于维护和控制的。
那么我们可以根据资源的特点对资源进行分类。
资源根据功能(function)分配是个好习惯,这样我们就可以将一组资源打包分配。
虽然,我们的目标是mapping一个user和资源之间的关系,然后直接的mapping很不方便,
根据“任何计算机的问题都可以通过增加新的层来完成”这个笑话。
我们间接的mapping一个user和资源之间的关系。
将这个关系组织起来放到session里面就完成了授权(authorization)。