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

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

AOP注解AOP面向切面编程 就是不修改原有业务代码统一给方法加通用功能日志、权限、事务、性能监控、参数校验等。通过这段定义不难看出如果我们想要统一实现角色验证也可用AOP切面编程来实现。接下来我将要通过自定义注解的方式封装角色校验的方法。项目目录具体代码如下Around(annotation(authCheck))publicObjectdoInterceptor(ProceedingJoinPointjoinPoint,AuthCheckauthCheck)throwsThrowable{ListStringanyRoleArrays.stream(authCheck.anyRole()).filter(StringUtils::isNotBlank).collect(Collectors.toList());StringmustRoleauthCheck.mustRole();RequestAttributesrequestAttributesRequestContextHolder.currentRequestAttributes();HttpServletRequestrequest((ServletRequestAttributes)requestAttributes).getRequest();// 当前登录用户UseruseruserService.getLoginUser(request);// 拥有任意权限即通过if(CollectionUtils.isNotEmpty(anyRole)){StringuserRoleuser.getUserRole();if(!anyRole.contains(userRole)){thrownewBusinessException(ErrorCode.NO_AUTH_ERROR);}}// 必须有所有权限才通过if(StringUtils.isNotBlank(mustRole)){StringuserRoleuser.getUserRole();if(!mustRole.equals(userRole)){thrownewBusinessException(ErrorCode.NO_AUTH_ERROR);}}// 通过权限校验放行returnjoinPoint.proceed();}Around环绕通知方法执行前后都能控制annotation(authCheck)切点 所有加了 AuthCheck 注解的方法自定义注解/** * 权限校验 * * author yupi */Target(ElementType.METHOD)Retention(RetentionPolicy.RUNTIME)publicinterfaceAuthCheck{/** * 有任何一个角色 * * return */String[]anyRole()default;/** * 必须有某个角色 * * return */StringmustRole()default;}接下来在controller中对需要拦截并进行角色校验的方法上添加AutoCheck注解
http://www.zskr.cn/news/1414658.html

相关文章:

  • Arduino Uno与红外传感器实战:从原理到智能应用开发
  • 跨越平台壁垒:Electron音乐软件的云原生部署新范式
  • 2026南昌医疗纠纷律师评测:哪家负责任?教你筛选靠谱医疗纠纷律师 - 品牌2025
  • 国内合规沟槽管件厂家技术解析与选型参考 - 奔跑123
  • Gemini推荐策略黑盒破解实录(内部泄露的8类用户分群逻辑+实时反馈闭环设计图)
  • Win7/Win8.1老系统求生指南:如何绕过KB2999226错误,成功安装VC++ 2015-2019运行库
  • 5大核心功能揭秘:BetterGI如何用AI技术彻底改变原神游戏体验
  • 2026年5月济南黄金回收哪家好?8家实测 + 避坑全攻略 - 生活测评君
  • 猫抓Cat-Catch:3步搞定网页视频下载,彻底告别资源丢失烦恼
  • UniXcoder终极指南:3种模式统一代码表示预训练模型
  • 如何快速备份QQ空间:终极自动化解决方案指南
  • 题解:洛谷 CF149D Coloring Brackets
  • 下载无水印短视频的工具推荐,亲测一圈给你交底
  • 四川高考志愿填报机构避坑指南:5个问题问完再交钱
  • 为什么聚簇索引数据物理存储按聚簇索引排序?
  • 基于Arduino与DTMF解码技术,打造离线智能音频门锁系统
  • 不止是打包:用Player面板配置提升你的Unity游戏专业度(从图标到启动动画全流程)
  • 我用 AI 写了一个完整的电商系统,只用了 3 天!2026 年 AI 编程终极指南(附完整代码 + 工具对比)
  • 解决Mentor许可冲突,让您的业务无缝运行
  • Docker 部署 MongoDB / MySQL / PostgreSQL 安全加固实录:TLS 双向认证、双因素鉴别与审计
  • RedisDesktopManager Windows版:免费高效的Redis可视化管理工具终极指南
  • Botty:暗黑破坏神2重制版自动化工具完整技术指南与实现原理深度解析
  • 大模型时代已来临!小白程序员必备:收藏这份AI前端转型指南
  • 2026年第二季度GEO服务商按预算选型指南:
  • 【紧急避坑指南】:Gemini 1.5 Pro在东南亚小语种(泰/越/印尼)翻译中隐藏的5类事实性谬误
  • 将Hermes Agent自定义提供方指向Taotoken的配置指南
  • 超详细!uni-app Android本地打包傻瓜式教程(转载)
  • 2026年AI大模型API接口中转站排行榜:主流服务商性能与成本权威实测排名
  • 【Sora 2 3D场景生成革命性突破】:20年AIGC架构师亲测的5大工业级落地陷阱与避坑指南
  • 定制款重锤式电阻测试仪,真能满足特殊工位的各类检测需求?