gpt4 book ai didi

java - 为什么拦截器会运行三次?

转载 作者:太空宇宙 更新时间:2023-11-04 10:02:09 25 4
gpt4 key购买 nike

 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object object) {
String jwt = request.getHeader("auth");
String payloadKey = "apitest";
HandlerMethod handlerMethod=(HandlerMethod)object;
Class type = handlerMethod.getBeanType();
if (type.isAnnotationPresent(Auth.class)) {
try {
if (jwt == null || !Objects.equals(payloadKey, JwtUtil.parseJWT(jwt).get("info", String.class))) {
return false;
}
}catch (ExpiredJwtException | SignatureException | MalformedJwtException e){
return false;
}
}
log.info("1");
return true;
}

当 jwt 为 true 时,但我看到 log.info("1") 运行了 3 次,为什么它运行了 3 次?

我的拦截器配置:

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(authenticationInterceptor())
.addPathPatterns("/**");
}
@Bean
public AuthenticationInterceptor authenticationInterceptor() {
return new AuthenticationInterceptor();
}

我在我的 Controller 类上设置了@Auth:@Auth公共(public)类ApiController

当我清除 preHandle 时,排除运行 3 次的“log.info("1") return true”

最佳答案

已更新

您可以调试AuthenticationInterceptor,以确认某些内容:

  1. 如果handlerMethod总共指向不同的对象3次?

  2. 如果AuthenticationInterceptor,即this变量,是否不同?

  3. 您的请求是否有重定向?

我尝试使用像您这样的代码,它具有正确的行为。您能否展示更多代码或重现问题的简单方法?

关于java - 为什么拦截器会运行三次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53349688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com