开源框架模块详解|码云开源EIP低代码平台
摘要
数据权限是EIP低代码平台RBAC权限体系最底层的数据隔离屏障,和菜单权限、按钮权限共同构成三层完整权限管控体系:菜单权限控制页面是否可见、按钮权限控制功能操作权限、数据权限控制用户能够读取哪些业务数据。模块支持可视化拼装生成数据权限过滤SQL表达式、绑定对应系统菜单、权限模板复用、角色绑定分发,依托组织架构体系完成数据行级过滤,结合后端代码统一拦截解析权限SQL语句,实现不同岗位人员查看差异化数据范围。
一、数据权限模块建设目的与核心作用
1.1 为什么系统需要独立的数据权限管理模块
- 实现行级数据隔离,满足企业数据分级查看需求
普通员工仅能查看本人所属部门数据、部门主管可查看本级及下属所有部门数据、集团管理员可查看全集团所有数据,依靠数据权限配置不同的数据过滤规则,天然匹配企业层级化的数据浏览管控需求。 - 解耦权限规则与角色配置,实现权限模板复用
将「本级及下级」「全部数据」等通用数据查看规则统一在数据权限模块维护为独立模板,多个角色可直接选用对应模板,无需在角色内重复编写过滤逻辑,统一管理、统一修改、全局同步生效。 - 补齐RBAC闭环,区分"能不能点页面"和"能看见多少数据"
菜单+按钮只管控功能访问权限,若缺少数据权限,同页面下所有人员会加载全部数据库数据,极易造成敏感业务数据泄露;数据权限从数据源头过滤返回数据集,是企业数据安全不可或缺的一环。 - 可视化拼装生成过滤SQL语句,降低开发集成成本
平台封装内置业务变量(当前用户、所在组织、所在组织及下级组织等),管理员可视化拖拽、点选即可自动拼装生成标准SQL过滤片段,后端直接拼接进业务查询语句完成数据过滤;同时支持自定义编写原生SQL条件,适配复杂业务过滤场景,兼顾易用性与灵活性,方便快速对接各个业务数据表集成使用。 - 后端统一拦截处理,全接口统一生效权限过滤
在控制器公共层统一注入数据权限解析逻辑,所有业务接口无需重复编写过滤代码,自动拼接权限筛选条件,保证全系统数据权限规则统一落地执行。
1.2 模块的具体作用
数据权限模块用于维护各个菜单对应的数据集过滤规则,管理员根据业务管理范围创建对应权限方案,通过可视化表达式编辑器自动生成标准的SQL查询过滤片段;创建完成的数据权限模板挂载至角色对应菜单中,用户登录系统后,后端自动读取当前角色绑定的数据权限SQL片段,自动拼接至业务原生查询SQL中执行过滤,接口只返回权限范围内的数据。系统内置「所有数据」「本级及下级组织数据」两套通用模板,支持新增自定义SQL过滤规则,搭配禁用开关、复制复用、批量删除等管理能力,配合组织架构形成完整的数据分级隔离体系。
1.3 权限入口与管控说明
菜单访问路径:【系统管理】→【权限信息】→【数据权限】
数据权限属于系统核心数据安全配置项,仅超级管理员、系统安全管理员拥有新增、编辑、删除权限;普通运维人员仅开放查看权限,防止数据过滤规则被恶意篡改,避免越权查看数据的安全隐患。
二、数据权限页面整体布局详解
2.1 顶部筛选区域
页面顶部提供名称、归属菜单、禁用状态三组检索条件,支持模糊匹配查询。系统菜单数量较多、对应多条数据权限规则时,可快速检索定位目标权限配置记录,提升运维配置效率。
2.2 顶部功能操作工具栏
| 功能按钮 | 具体功能描述 |
|---|---|
| 新增 | 新建数据权限方案,绑定归属菜单、配置过滤SQL表达式、填写基础信息 |
| 编辑 | 修改权限名称、归属菜单、过滤SQL表达式、排序、禁用状态、备注信息 |
| 批量删除 | 批量清理废弃、无用的数据权限模板记录 |
| 复制 | 复刻已有数据权限配置,在原有SQL表达式基础上微调,快速创建同类权限规则 |
| 详情 | 查看当前数据权限完整配置参数、创建修改日志信息 |
2.3 列表字段说明
- 名称:自定义数据权限标识名称,如"本级及下级""所有数据",方便角色选择识别
- 归属菜单:绑定该数据权限生效的系统功能菜单,生成的SQL过滤片段只对指定菜单接口生效
- 禁用:软删除开关,禁用后所有绑定该权限的角色自动失效,历史配置数据保留可恢复启用
- 备注:填写该数据权限的适用场景、管控范围说明
- 排序号:自定义数字,数值越小列表展示优先级越高
- 创建人/创建时间、修改人/修改时间:全生命周期操作留痕,满足企业内控、审计追溯要求
- 操作:单行数据独立编辑、删除操作入口
三、数据权限配置与全链路实操讲解
3.1 新增/编辑数据权限SQL表达式配置
弹窗各项配置项释义:
- 归属菜单(必填):选定权限对应的目标系统菜单,限定该生成的SQL过滤规则仅作用于对应菜单的接口请求。
- 名称(必填):填写权限规则名称,用于角色配置时直观选择。
- 表达式(SQL过滤片段) :可视化拼装生成标准查询条件语句,平台封装快捷内置变量按钮:
- 所有:匹配全量数据,不生成额外SQL过滤条件
- 当前用户:自动生成对应SQL,过滤数据创建人为当前登录用户
- 当前用户名:匹配数据表用户名称字段
- 所在组织:仅查询匹配本人归属组织的数据
- 所在组织及下级组织:查询本人组织+所有下级子组织的全部数据
示例自动生成SQL片段:org.OrganizationId in (所在组织及下级组织),开发对接数据表组织ID字段即可完成树形层级数据过滤;同时支持手动编写原生SQL语句,适配复杂多条件、多表关联的数据过滤需求,输出标准Where条件片段,方便后端代码直接集成使用。
- 禁用开关:默认开启可用状态,关闭则该数据权限全局失效。
- 排序号、备注:配置列表展示顺序,备注记录权限使用说明、数据表对接字段说明。
3.2 在角色维护中绑定数据权限模板
进入【角色维护】→【权限设置】面板,选中对应菜单后,在「数据权限」区域勾选已创建好的数据权限模板(本级及下级/所有),提交保存后,该角色下所有用户访问对应菜单时,后端自动加载选中的SQL过滤片段拼接执行。
同一个菜单可预设多套数据权限SQL方案,不同岗位角色按需绑定,快速实现一岗一数据范围的管控模式。
3.3 后端源码底层执行逻辑
- 所有业务接口接收请求时,自动读取当前登录用户身份信息;
- 根据用户ID+当前访问菜单ID,查询该角色绑定的数据权限配置,取出预配置好的SQL过滤片段;
- 将权限SQL片段自动注入到业务原始查询语句的Where条件中,数据库执行查询时自动过滤掉无权限的数据行;
- 最终接口仅返回权限范围内的数据集,从代码底层强制拦截,前端无法绕过数据权限控制。
整套权限拦截逻辑封装在公共控制器层,输出标准化SQL片段,各个业务模块无需重复开发权限过滤代码,接入成本低、集成便捷。
四、数据权限管理核心业务价值
- 三层权限分离管控,权限架构清晰易维护
菜单管访问入口、按钮管操作行为、数据管展示范围,三层权限解耦分开配置,各司其职,排查权限问题时分层定位,降低后期维护成本。 - 模板化复用配置,大量减少重复开发工作
通用的数据查看范围统一做成公共SQL模板,多个角色、多个菜单可重复引用,修改一处SQL表达式全局生效,不用逐个角色重复配置过滤规则。 - 可视化拼装生成SQL语句,降低对接集成成本
运维人员无需手写复杂SQL条件,依托系统内置变量可视化即可生成标准的查询过滤片段;开发人员只需要将数据表对应字段匹配表达式字段,即可快速完成数据权限集成落地,大幅减少编码工作量。 - 后端强制拦截,杜绝前端权限篡改绕过风险
数据过滤在服务端代码层面统一处理,即便前端页面被篡改、接口被抓包调用,服务端依旧会执行拼接后的权限SQL过滤逻辑,从根源避免越权抓取敏感数据的安全问题。 - 贴合集团化多层级组织管理场景
结合组织架构树形结构,依托"本级及下级"生成的SQL过滤语句,完美适配集团总部、分公司、部门、班组逐级的数据查看权限,适配工程、制造、政务等多层级企业管理模式。 - 全程操作留痕+软禁用机制,满足合规审计要求
所有数据权限新增、修改、绑定操作全部记录日志,搭配软删除机制,权限变更行为可全程溯源,满足等保测评、企业内部审计规范。
结语
EIP低代码平台数据权限模块作为RBAC体系的数据安全底座,依托可视化拼装输出标准SQL过滤语句、模板复用、角色分发、后端统一拦截四大核心能力,实现精细化的行级数据隔离管控。搭配组织架构体系适配企业真实层级管理需求,输出的SQL片段可快速集成至各类业务接口,和菜单、按钮权限组合形成完整、安全、易集成的全维度权限方案