在RBAC模型下,系统只会验证用户A是否属于角色RoleX,而不会判断用户A是否能访问只属于用户B的数据DataB。这种问题我们称之为“水平权限管理问题”。
数据权限
数据规则
比如我们系统的商机数据,需要从下面几个维度来控制数据访问权限。
销售人员只能看自己的数据;
各大区的销售经理只能看各区域的数据(安徽大区的销售经理看安徽区域的商机数据),同理也适用于某BG分管领导只能看所在BG的商机数据;
财务人员只能看金额小于一万的数据。
上面的这些维度就是数据规则。
这样数据规则的几个重点要素我们也明晰了,就是规则字段,规则表达式,规则值,上面三个场景对应的规则分别如下:
规则字段:创建人,规则表达式:= ,规则值:当前登录人
规则字段:所属大区,规则表达式:= ,规则值:安徽大区
规则字段:销售金额,规则表达式:< ,规则值:10000
数据规则关联权限(资源)
需要建立一个中间表即可
数据规则关联角色(通过角色权限表)
让不同的用户拥有不同的数据规则
用户是通过授予不同的角色来进行(资源)权限的管理,同理我们可以让角色在授予权限的时候关联上数据规则,这样最终在系统上就体现为不同的用户拥有不同的数据规则。
在角色权限表中加个数据规则自字段关联,多个数据规则可以使用分隔符分割,如下图
在关联权限(资源)的时候,也可以只建一张关联表,一个权限下有多个数据规则,省略数据规则表Data_Rulr,如下图
参考资料:https://blog.csdn.net/m0_66404702/article/details/129582654?spm=1001.2014.3001.5502