news 2026/7/9 6:33:36

基于 Spring AOP 的角色权限校验实现指南注解类型避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 Spring AOP 的角色权限校验实现指南注解类型避坑指南

文章目录

  • 一、引入依赖
  • 二、 权限校验注解
  • 三、权限校验切面
  • 四、使用注解
  • 五、防踩坑(注解成员变量的类型)
      • ✅ 允许的注解成员(选项)类型

一、引入依赖

<!--aop依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>

二、 权限校验注解

  • 写在annotation包下
@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public@interfaceAuthCheck{/** * 必须有某个角色 */StringmustRole()default"";}

三、权限校验切面

  • aop包下
@Aspect@ComponentpublicclassAuthInterceptor{@ResourceprivateUserServiceuserService;/** * 执行拦截 * * @param joinPoint 切入点 * @param authCheck 权限校验注解 */@Around("@annotation(authCheck)")publicObjectdoInterceptor(ProceedingJoinPointjoinPoint,AuthCheckauthCheck)throwsThrowable{StringmustRole=authCheck.mustRole();RequestAttributesrequestAttributes=RequestContextHolder.currentRequestAttributes();HttpServletRequestrequest=((ServletRequestAttributes)requestAttributes).getRequest();// 当前登录用户UserloginUser=userService.getLoginUser(request);UserRoleEnummustRoleEnum=UserRoleEnum.getEnumByValue(mustRole);// 不需要权限,放行if(mustRoleEnum==null){returnjoinPoint.proceed();}// 以下为:必须有该权限才通过// 获取当前用户具有的权限UserRoleEnumuserRoleEnum=UserRoleEnum.getEnumByValue(loginUser.getUserRole());// 没有权限,拒绝if(userRoleEnum==null){thrownewBusinessException(ErrorCode.NO_AUTH_ERROR);}// 要求必须有管理员权限,但用户没有管理员权限,拒绝if(UserRoleEnum.ADMIN.equals(mustRoleEnum)&&!UserRoleEnum.ADMIN.equals(userRoleEnum)){thrownewBusinessException(ErrorCode.NO_AUTH_ERROR);}// 通过权限校验,放行returnjoinPoint.proceed();}}

四、使用注解

@AuthCheck(mustRole=UserConstant.ADMIN_ROLE)

五、防踩坑(注解成员变量的类型)

✅ 允许的注解成员(选项)类型

除了下面这些类型,其余类型会报错

  1. 基本数据类型(primitive types)
    • byte,short,int,long
    • float,double
    • char
    • boolean
  2. 字符串类型
    • String
  3. 枚举类型(enum)
    • 例如:TimeUnit.SECONDS
  4. 注解类型(嵌套注解)
    • 即另一个@interface类型
  5. 以上类型的数组形式
    • 如:int[],String[],MyEnum[],MyAnnotation[]
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 16:22:41

【计算机毕业设计案例】基于python-CNN深度学习卷积神经网络对鸟类识别基于python-CNN卷积神经网络对鸟类识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/1 21:38:02

深度学习毕设项目推荐-基于python-CNN卷积神经网络对墙体有无污渍识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/2 1:47:08

深度学习毕设项目推荐-基于python-CNN卷积神经网络对鸟类识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/2 22:45:36

Web Service 实例

Web Service 实例 概述 Web Service 是一种在网络上提供服务的组件,它允许不同平台和语言的应用程序之间进行交互。本篇文章将通过一个实例,详细讲解 Web Service 的基本概念、架构以及在实际应用中的实现过程。 Web Service 架构 Web Service 通常由三个主要部分组成:服…

作者头像 李华
网站建设 2026/7/2 1:45:51

深度学习毕设项目:基于python_CNN卷积神经网络识别苹果品质基于python_CNN深度学习卷积神经网络识别苹果品质

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华