news 2026/6/12 14:50:41

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

作者头像

张小明

前端开发工程师

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/10 9:19:31

Markdown转PDF发布技术报告:基于TensorFlow实验结果生成

基于TensorFlow实验结果的自动化技术报告生成实践 在人工智能项目日益复杂的今天&#xff0c;一个常被忽视却至关重要的问题浮出水面&#xff1a;我们如何确保每一次模型训练的结果都能被准确、一致且高效地记录下来&#xff1f;尤其在团队协作环境中&#xff0c;研究员A的Exce…

作者头像 李华
网站建设 2026/6/12 1:24:51

一位开源贡献者的个人心声

一位开源贡献者的个人心声 亲爱的开发者与数据科学家同仁&#xff1a; 如果每位阅读此文的您都能贡献一杯咖啡的价钱&#xff0c;我将能全身心投入到服务我们社区的开源工作中。当然&#xff0c;并非每个人都能或愿意资助&#xff0c;这完全没问题。 多年来&#xff0c;我一直构…

作者头像 李华
网站建设 2026/6/12 0:16:20

数据预处理与特征工程

目录 数据预处理的目的 常见数据预处理方法 实际应用注意事项 数据抽样的定义 常见的抽样方法 抽样误差与控制 样本量计算 实施步骤 工具与代码示例 注意事项 数据标准化的定义 Z-score标准化 Min-Max标准化 归一化的定义 L2归一化 小数缩放 标准化与归一化的…

作者头像 李华
网站建设 2026/6/10 9:19:23

wpf 怎么设置Border是屏幕宽度的50%

wpf 怎么设置Border是屏幕宽度的50% <Grid><Grid.ColumnDefinitions><ColumnDefinition Width"1*"/><ColumnDefinition Width"1*"/></Grid.ColumnDefinitions><!--推荐套餐--><Border Grid.Column"0"…

作者头像 李华
网站建设 2026/6/12 20:56:34

还在用无真实参考文献的AI写论文?8款AIGC率低至5%工具推荐!

还在为论文熬夜到凌晨&#xff0c;却发现AI生成的内容漏洞百出&#xff1f; 还在手动拼凑参考文献&#xff0c;却被导师一句“来源不实”打回原形&#xff1f; 还在为动辄30%、40%的AI检测率而提心吊胆&#xff0c;感觉努力全白费&#xff1f; 如果你对以上任何一个问题疯狂点头…

作者头像 李华
网站建设 2026/6/10 9:27:08

LobeChat能否实现AI炼金术士?古代化学知识与现代科学对照

LobeChat能否实现AI炼金术士&#xff1f;古代化学知识与现代科学对照 在人类探索自然的漫长历史中&#xff0c;炼金术曾是一种既神秘又充满哲思的实践。它不只是试图“点石成金”的荒诞幻想&#xff0c;更承载着古人对物质本质、宇宙秩序和生命转化的深刻追问。如今&#xff0c…

作者头像 李华