gpt4 book ai didi

java - HandlerInterceptorAdapter 和 Zuul 过滤器

转载 作者:行者123 更新时间:2023-12-02 12:18:35 28 4
gpt4 key购买 nike

可以使用 Zuul 配置添加 HandlerInterceptorAdapter。我需要拦截对特定资源的请求,但我想因为我有 Zuul 过滤器配置,所以拦截器永远不会被调用。

可以这样做吗?

最佳答案

我也尝试过实现同样的目标。我们有一些 Spring MVC Controller 和 Zuul 代理。但我仍然希望使用相同的拦截器。

这里的问题是 zuul 在它自己的 ZuulServlet 中运行,并且不会从 MVC servlet 中获取拦截器。 Spring Cloud: ZuulConfiguration.java配置 ZuulHandlerMapping,这是唯一可以设置拦截器的地方,但它是不可配置的。因此,您需要一个 InstantiationAwareBeanPostProcessorAdapter 来干扰 bean 创建,在实例化之后、初始化之前(拦截器初始化之前)设置拦截器。

这对我有用:

@Configuration
@RequiredArgsConstructor
public class ZuulHandlerBeanPostProcessor extends InstantiationAwareBeanPostProcessorAdapter {

@NonNull
private final MyInterceptor myInterceptor;

@Override
public boolean postProcessAfterInstantiation(final Object bean, final String beanName) throws BeansException {

if (bean instanceof ZuulHandlerMapping) {

val zuulHandlerMapping = (ZuulHandlerMapping) bean;
zuulHandlerMapping.setInterceptors(myInterceptor);
}

return super.postProcessAfterInstantiation(bean, beanName);
}

}

关于java - HandlerInterceptorAdapter 和 Zuul 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39801282/

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