权限系统-数据权限设计

       如何去设计数据权限呢,从上面的定义中我们了解到数据和用户行为一起才构成了数据权限,它的本质是用户从一堆数据中获取到一小部分对用户有意义的数据。概括的说就是用户从一堆数据中获取一部分有边界范围的数据,这里提到边界一词,目的就是为了要确定对用户有意义的那部分数据范围。如果把一堆数据看成是一座山,那么对用户有意义的数据可能个是山上的一个大石头,如果把一堆数据看成是整个天空,那么对用户有意义的数据可能就是其中的一片云,我们能看到他们是因为他们自有其形,能反射光被人眼所观察到,但是数据要如何来确定边界呢?通过观察,我们发现数据是可以分类的,我们可以归纳出它的部分属性,总结起来就是我们可以通过分类和属性找到对我们来说是安全的数据,这样的话也就可以有一个方法来确定数据的边界了。

       这里我们以后台开发为实例,假设目前后台权限的结构层次包括:用户->角色->授权->资源,其中彼此关联的两端都是多对多的关系,上面我们说到数据和用户的行为相关,这里的用户行为解释为用户的操作,如果我们将数据权限规则部分放到设置用户操作权限的过程之中,那么可以说明当前操作对应的数据范围是确定的,一旦需求出现不同用户拥有相同的操作权限,拥有不同的数据权限的时候我们就需要在重新定义一个新的功能操作权限及其附带的数据权限,这样就产生了冗余。如果我们将数据权限的设定和功能权限的设定完全区分开,也就是说先进行功能权限的设定,当功能权限设定完之后,再去设定对应的数据权限,那么就可以简单许多了。

       这里的重点是数据权限规则脱离了功能操作是不能单独存在的,除非对于所有的操作都拥有相同的数据权限规则,否则就没有任何意义。 

相关推荐