当前位置: 首页 > news >正文

AOP+自定义注解实现角色验证

AOP注解:

AOP(面向切面编程) 就是不修改原有业务代码,统一给方法加通用功能:日志、权限、事务、性能监控、参数校验等。通过这段定义不难看出如果我们想要统一实现角色验证也可用AOP切面编程来实现。接下来我将要通过自定义注解的方式封装角色校验的方法。

项目目录


具体代码如下:

@Around("@annotation(authCheck)")publicObjectdoInterceptor(ProceedingJoinPointjoinPoint,AuthCheckauthCheck)throwsThrowable{List<String>anyRole=Arrays.stream(authCheck.anyRole()).filter(StringUtils::isNotBlank).collect(Collectors.toList());StringmustRole=authCheck.mustRole();RequestAttributesrequestAttributes=RequestContextHolder.currentRequestAttributes();HttpServletRequestrequest=((ServletRequestAttributes)requestAttributes).getRequest();// 当前登录用户Useruser=userService.getLoginUser(request);// 拥有任意权限即通过if(CollectionUtils.isNotEmpty(anyRole)){StringuserRole=user.getUserRole();if(!anyRole.contains(userRole)){thrownewBusinessException(ErrorCode.NO_AUTH_ERROR);}}// 必须有所有权限才通过if(StringUtils.isNotBlank(mustRole)){StringuserRole=user.getUserRole();if(!mustRole.equals(userRole)){thrownewBusinessException(ErrorCode.NO_AUTH_ERROR);}}// 通过权限校验,放行returnjoinPoint.proceed();}

@Around:环绕通知,方法执行前后都能控制
@annotation(authCheck):切点 = 所有加了 @AuthCheck 注解的方法

自定义注解

/** * 权限校验 * * @author yupi */@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceAuthCheck{/** * 有任何一个角色 * * @return */String[]anyRole()default"";/** * 必须有某个角色 * * @return */StringmustRole()default"";}

接下来在controller中对需要拦截并进行角色校验的方法上添加@AutoCheck注解

http://www.cnnetsun.cn/news/2619297.html

相关文章:

  • ESP8266与Blynk物联网入门:从零构建手机遥控LED系统
  • AI 日报 | 2026年5月28日
  • Dism++终极指南:如何用免费工具彻底优化Windows系统性能
  • 【限时解禁】Sora 2提示词工程终极矩阵:含12维可控性参数表、8类高危歧义词库与实时反馈校准协议(OpenAI内部培训材料精编版)
  • 从零到一:如何用新蜂商城快速构建你的电商帝国
  • 医院导航定位系统技术方案与落地实战
  • RPG Maker解密实战:3步提取加密游戏资源的完整指南
  • 《机乎 vs Moltbook:2026 年 AI 社交平台深度对比》
  • Lean量化交易引擎:从零到一的完整实战指南
  • 架构革新:重新定义OpenCore配置管理的新范式
  • Spark算子 - Python
  • 完全免费!不用花一分钱调用 GPT4!公司代码不会泄露!断网也能用!
  • uVision调试器C++开发限制与解决方案
  • 基于SQLite的本地化二次智能决策系统设计与实现
  • 3分钟解锁网易云音乐NCM格式:Windows用户必备的免费图形化解密工具终极指南
  • U盘版小龙虾教程
  • 【他山之石】盖瑞·查普曼《爱的五种语言》导读
  • 手把手教你用Claude Code打造自己的视频创作智能体(1)
  • 从数据看板到决策智能体:基于因果推断与约束优化的自动化策略生成实战
  • 记录AI学习之路Day01 Vibe Coding
  • 上海办公室装修省钱技巧
  • 自条件化与非自回归吸引子:提升端到端说话人日志模型性能
  • Switch游戏画面电脑同步终极指南:5分钟实现高清直播录制
  • 从提示词工程到上下文工程:构建AI就绪的项目心智模型
  • 角色驱动AI编程工作流:从概念到实践,构建你的虚拟开发团队
  • 深度解析signature_pad:HTML5 Canvas平滑签名绘制技术实现与高级优化
  • NCCL性能调优必看:如何通过环境变量NCCL_TOPO_FILE与源码理解自定义机器拓扑
  • 美少女万华镜1-4下载2026最新
  • 多模态输入总报错?Gemini最新v1.5 API兼容性全解析,92%开发者忽略的4个元数据校验盲区
  • 告别APK/IPA文件图标混乱!ApkShellext2让Windows资源管理器完美显示应用图标