通用数据权限的思考与设计

1 数据权限概述

1.1 什么是数据权限

数据权限是指对系统用户进行数据资源可见性的控制,通俗的解释就是:`符合某条件的用户只能看到该条件下对应的数据资源`。那么最简单的数据权限大概就是:用户只能看到自己的数据。而在正式的系统环境中,会有很多更为复杂的数据权限需求场景,如:

领导需要看到所有下属员工的客户数据,员工只能看自己的客户数据;

经理A能看到所有企业客户,经理B只能看到年销售额小于1000万的企业客户;

角色A能看到全国的产品数据,角色B只能看到上海的产品数据;

上述这些需求,使用硬编码也是可以实现的,但是在业务快速发展的过程中,类似这种数据权限需求会越来越多,如果全部采用硬编码的方式,无疑会给我们带来巨大的开发和维护压力。

1.2 要素分析

从当前登录用户的角度来说,数据权限的定义可以解释为:`当前登录的用户只能看到该用户权限范围内的数据资源`。由此可以分析出数据权限控制中几个关键要素:

1. 主体,即当前登录用户。领导、角色等概念可翻译为当前登录用户是否是领导,是否拥有某角色。
2. 数据资源。即受管控系统数据。
3. 条件规则。即当前登录用户对于某特定的数据资源适用的条件。

2 数据权限设计

理论上来说,用户在访问受控的系统数据时,获取用户对该数据资源适用的条件规则,并将该条件规则解析为SQL查询语句即可实现对数据的权限控制。但是在实现过程中,还是会有很多难点,譬如当前登录用户适用下列规则:

客户数据:[客户经理] [包含于] [下属人员] 产品数据:[销售地区] [等于] [上海] 订单数据:([产品销售地区] [等于] [上海])[并且] ([客户市场经理] [包含于] [下属人员])

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydxwj.html