news 2026/4/25 22:41:25

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

作者头像

张小明

前端开发工程师

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/4/25 16:04:24

2025最新Facefusion 3.1.2 Docker部署教程

2025最新Facefusion 3.1.2 Docker部署教程 在AI生成内容爆发的今天&#xff0c;人脸替换技术早已不再是实验室里的“黑科技”&#xff0c;而是广泛应用于短视频创作、影视后期甚至虚拟主播生产链中的核心工具。而 Facefusion ——这个从开源社区成长起来的明星项目&#xff0c…

作者头像 李华
网站建设 2026/4/25 23:25:55

一维动态规划 - 从递归/记忆化搜索入手动态规划

从递归/记忆化搜索入手动态规划 在入门动态规划时&#xff0c;记忆化搜索往往比递推形式更容易想。可以先写出记忆化搜索&#xff0c;再转为递推形式。 记忆化搜索很好用&#xff0c;但并不是万能的&#xff0c;某些题目只有写成递推&#xff0c;才能结合数据结构等来优化时间…

作者头像 李华
网站建设 2026/4/22 2:00:54

自动驾驶世界模型核心成果、论文代码与最新进展全景解析

一、核心参与主体与技术生态布局&#xff08;一&#xff09;参与主体分类及定位主体类型代表机构/企业核心定位与研发方向车企/科技企业理想、小鹏、华为、百度、小米、吉利、滴滴、地平线、蔚来、NVIDIA、阿里高德技术落地与规模化应用&#xff0c;聚焦车端部署、仿真体系搭建…

作者头像 李华
网站建设 2026/4/23 0:56:50

Dify平台API权限控制机制的设计与实施

Dify平台API权限控制机制的设计与实施 在AI应用快速渗透企业核心业务的今天&#xff0c;一个看似不起眼的技术细节——API能不能被随意调用——往往决定了整个系统的安危。设想一下&#xff1a;某天你发现外部合作伙伴通过一个公开的接口&#xff0c;不仅调用了你的智能客服模型…

作者头像 李华
网站建设 2026/4/22 20:32:25

LobeChat能否实现多人协同编辑?共享会话功能设想

LobeChat能否实现多人协同编辑&#xff1f;共享会话功能设想 在远程办公常态化、AI助手深度融入工作流的今天&#xff0c;一个看似简单却日益凸显的问题浮出水面&#xff1a;我们能否像协作编辑一份文档那样&#xff0c;多人实时共用同一个AI对话&#xff1f; 想象这样一个场…

作者头像 李华
网站建设 2026/4/21 3:30:30

基于单片机的智能温控风扇系统设计(温度+风速调节)【附代码】

&#x1f4c8; 算法与建模 | 专注PLC、单片机毕业设计 ✨ 擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导&#xff0c;毕业论文、期刊论文经验交流。✅ 专业定制毕业设计✅ 具体问题可以私信或查看文章底部二维码本系统的核心设计内容在于构建一个以单片机…

作者头像 李华