软件开发—数据权限的重要性
本文来源:广州软件开发 发布日期:2020-10-25
1、数据权限概述
1.1、什么是数据权限?
数据权限是指对系统用户对数据资源可见性的控制。流行的解释是,满足某种条件的用户只能在该条件下看到相应的数据资源。所以最简单的数据权限可能是:用户只能看到自己的数据。在正式的系统环境中,有许多更复杂的数据权限需求方案,例如:
领导需要看到所有下属员工的客户数据,员工只能看到自己的客户数据;
经理A可以看到所有企业客户,B经理只能看到企业客户年销售额不到1000万;
a角色可以看到全国的产品数据,B角色只能看到上海的产品数据;
这些要求也可以通过使用硬编码实现,但是在业务的快速发展过程中,对于类似的数据权限将有越来越多的要求。如果所有这些要求都是硬编码的,它无疑将给我们带来巨大的发展和维护压力。
1.2、要素分析
从当前登录用户的角度来看,数据权限的定义可以理解为:当前登录用户只能看到用户权限范围内的数据资源。由此,可以分析数据权限控制的几个关键要素:
主体,即当前登录用户。领导和角色等概念可以转换为当前登录用户是否是领导者,以及他或她是否具有角色。
数据资源。即受控系统数据。
有条件的规则。也就是说,当前登录用户对于特定的数据资源适用的条件。
2、数据权限设计
理论上,当用户访问被控制的系统数据时,可以得到用户应用于数据资源的条件规则,并将条件规则解析为SQL查询语句,实现对数据的权限控制。但是,在实现中仍然存在许多困难,例如以下规则适用于当前登录用户:
客户数据:[客户经理][包含在][下属人员]产品数据:[销售地区][等于][上海]订单数据:([产品销售地区][等于][上海])[和]([客户营销经理][包含在][下属人员])
思考如下问题:
[accountManager][included][submiters]如何解析为SQL语句?如何处理多表联合查询?
下属由系统根据当前的登录用户进行计算,上海则根据管理员的背景进行选择。这两种方法如何兼容?
如何设计复杂多变的组合条件?
如何确定应用于当前查询的条件?
一个用户应该如何具有多个角色,不同角色应该如何为同一规则设置不同的值?
2.1、规则元
名词定义:正则元素。在本文中,它是指一个独立的数据规则定义。不同的用户可以为规则元素设置特定的规则筛选值,作为数据查询的筛选条件。在上述规则中,[客户经理]和[销售地区]属于规则元素。
2.2、规则元配置
一。规则元名称的配置。表中的哪些字段可以由规则设置,以及规则元名称如何与表字段相关联。(例如,在上面的规则[客户经理],[销售区域])中,很容易想到通过配置文件来维护规则名和数据库字段之间的关系。
2.规则元素值数据源的配置。例如,【下属人员】和【上海】在上述规则中,不难发现规则人民币价值有三个来源:
后台管理人员输入。