news 2026/6/15 14:40:15

仿照若依框架进行数据权限控制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
仿照若依框架进行数据权限控制

用的方案其实就是“若依”那套思路,不过自己做了点裁剪,核心就四步——注解标识、AOP 拦截、SQL 拼接、MyBatis 消费。下面按执行顺序捋一遍:

  1. 打标记
    在需要控制权限的 Mapper 方法上贴一个自定义注解@DataScope,里面两个值:

    @DataScope(deptAlias="d",userAlias="u")List<Xxx>selectList(Xxxparam);

    这样一眼就能看出“这个方法要走数据权限”。

  2. AOP 切面
    专门写了一个DataScopeAspect,进入方法之前先跑:

    • 清理 ThreadLocal,防止线程复用串数据;
    • 从 Spring Security 上下文里拿当前登录用户,包括他的角色、部门 ID、用户 ID;
    • 如果是超级管理员,直接放行;否则根据角色提前配置好的“数据范围”枚举拼 SQL 片段,比如“本部门及以下”就用find_in_set(ancestors),“仅本人”就create_by = #{userId}
  3. 把条件塞进实体
    所有实体都继承BaseEntity,里面有个临时字段dataScope。切面通过反射把第 2 步拼好的 SQL 片段塞进去,再往下传。

  4. MyBatis 消费
    XML 里统一加一句:

    <iftest="dataScope != null and dataScope !=''">${dataScope}</if>

    真正发到数据库的 SQL 就带上了权限过滤条件,返回的数据自然就是当前用户能看的那部分。


亮点补充

  • 对业务代码零侵入,只在 Mapper 层加注解,Service 层无感知。
  • SQL 片段统一维护,换需求只改枚举,不动业务。
  • 线程级 ThreadLocal + 用完即清理,没有内存泄漏风险。
  • 后面做 SaaS 多租户时,把“租户 ID”字段也加进来,同一套切面直接复用。

一句话总结
“注解一贴,切面自动把‘部门/个人’范围拼成 SQL,MyBatis 尾巴一接,数据权限就生效,全程业务代码无感,改需求只改配置。”

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 13:56:30

万物皆可集成系列:低代码如何不成为数据孤岛

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…

作者头像 李华
网站建设 2026/6/14 21:24:05

从零基础到入门实战:我的2025鸿蒙领航者养成记

目录 一、引言&#xff1a;偶然结缘&#xff0c;开启鸿蒙学习之路 二、入门摸索期&#xff1a;踩过的坑与关键突破 三、实战进阶期&#xff1a;第一个鸿蒙小应用诞生 四、社区融入期&#xff1a;从“索取”到“分享”的转变 五、总结&#xff1a;2025成长复盘与未来计划 一…

作者头像 李华
网站建设 2026/6/15 13:30:32

LobeChat能否接入中小学课程?AI普及教育

LobeChat能否接入中小学课程&#xff1f;AI普及教育 在一间普通的初中语文课堂上&#xff0c;老师正引导学生预习《岳阳楼记》。不同于以往逐字翻译的讲解方式&#xff0c;她打开了教室大屏上的一个简洁界面&#xff0c;上传了一段古文PDF&#xff0c;轻点提问&#xff1a;“请…

作者头像 李华
网站建设 2026/6/7 6:43:21

LobeChat能否对接Zapier?低代码自动化流程整合

LobeChat 能否对接 Zapier&#xff1f;一场关于“对话即操作”的低代码实践 在今天的企业数字化场景中&#xff0c;一个越来越常见的需求浮出水面&#xff1a;我们能不能对 AI 说一句话&#xff0c;就让它自动完成一系列跨系统的任务&#xff1f; 比如&#xff0c;在聊天窗口里…

作者头像 李华
网站建设 2026/6/14 22:40:29

Langflow本地部署:解决安装卡顿问题

Langflow本地部署&#xff1a;解决安装卡顿问题 在构建大语言模型应用时&#xff0c;越来越多开发者开始尝试使用可视化工具来提升开发效率。Langflow 就是这样一个备受关注的项目——它为 LangChain 提供了一个直观的图形界面&#xff0c;让开发者可以通过拖拽节点的方式快速…

作者头像 李华
网站建设 2026/6/13 15:49:44

基于PaddlePaddle实现图像分类经典模型

基于PaddlePaddle实现图像分类经典模型 在医疗影像诊断、工业质检甚至手机相册自动分类中&#xff0c;图像分类技术无处不在。它看似简单——给一张图打个标签&#xff0c;但背后却凝聚了几代深度学习架构的演进智慧。从最早的LeNet到如今广泛应用的ResNet&#xff0c;每一次突…

作者头像 李华