告别越权查询!一套可复用的后端数据权限设计模板-二、数据权限的设计

时间:2025-04-16 11:56:49
  • 对代码低侵入或零侵入性。
  • 减少硬编码,一键启停。

所有的数据权限最终转化都是对sql语句的执行进行拦截转换,对原始执行sql的条件上新增一个数据权限的过滤条件;就是要对哪个表字段要加什么条件。

  • 资源: 数据权限转化为要针对的表字段在这里定义为资源,例如:本人创建的可见,这里对应的要过滤的表字段可能就叫createUserId,那么createUser就是资源;再例如:本部门及以下部门可见,这里要过滤的表字段可能就叫createDeptId。
  • 取值规则: 如果资源是定位到要拦截sql的表字段,那么取值规则就理解为拼接sql时表字段=或in后面的内容;例如:本人创建的可见,那么取值规则就是=1(用户本人id),最终本人可见的数据权限拼接后的sql为createUserId=1

通过资源与取值规则的组合,就可以做数据权限任何拦截sql的处理拼接。