RBAC(基于角色访问控制)做数据权限

在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

posted @ 2024-11-12 17:30  欧小文大叔  阅读(0)  评论(0编辑  收藏  举报