实现Java自定义注解实现Controller不做Token校验

一、整体流程

下面是整个实现过程的步骤:

步骤操作
1定义一个自定义注解
2编写一个AOP切面
3在AOP切面中判断Controller是否有该注解
4如果有该注解,则不进行Token校验
5如果没有该注解,则进行Token校验

二、具体步骤

1. 定义一个自定义注解
// 自定义注解
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NoTokenCheck {
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
2. 编写一个AOP切面
@Aspect
@Component
public class TokenAspect {

    @Autowired
    private TokenService tokenService;

    @Around("@annotation(com.example.demo.NoTokenCheck)")
    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
        return joinPoint.proceed();
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
3. 在AOP切面中判断Controller是否有该注解

在上面的代码中,使用@Around注解指定了切点为带有@NoTokenCheck注解的方法。这样,在Controller层中使用@NoTokenCheck注解的方法就不会进行Token校验。

4. 如果有该注解,则不进行Token校验

当Controller中的方法使用了@NoTokenCheck注解时,AOP切面会拦截该方法,并直接返回,不进行Token校验。

5. 如果没有该注解,则进行Token校验

当Controller中的方法没有使用@NoTokenCheck注解时,AOP切面会进行Token校验,以确保接口的安全性。

三、序列图

TokenAspect Controller TokenAspect Controller 调用带有@NoTokenCheck注解的方法 返回结果

四、流程图

flowchart TD
    start[开始] --> define_annotation[定义注解 @NoTokenCheck]
    define_annotation --> write_aspect[编写AOP切面]
    write_aspect --> check_annotation[在AOP切面中判断注解]
    check_annotation --> check_token[判断是否进行Token校验]
    check_token --> end[结束]

通过以上步骤,你就可以实现在Controller中不进行Token校验的功能了。希望这篇文章可以帮助到你,加油!