Spring,Interceptor的excludePathPatterns函数无法正常工作

我正在研究Spring Framework,我想编写一个拦截器,最后我写了它并且工作正常。 但在某一点上,我不希望我的拦截器拦截用户想要注销并且会话失效的请求。 但它并没有按照我的期望发生。

我通过扩展WebMvcConfigurerAdapter并使用addInterceptors方法添加拦截器,这里是代码。

public void addInterceptors(InterceptorRegistry registry) { super.addInterceptors(registry); registry.addInterceptor( loggerInterceptor ); registry.addInterceptor( authenticationInterceptor ).excludePathPatterns("/invalidate"); } 

我在这里做错了吗? excludePathPatterns – >我的URL以/ invalidate结尾。 所以请指导我,如何设置一个合适的模式。

你试过如下吗?

 @Configuration @EnableWebMvc public class MyWebConfig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyCustomInterceptor()) .addPathPatterns("/**") .excludePathPatterns("/foo/**"); } } 

参考

请参阅此java doc以获得更好的理解。

在我的情况下,我不得不调试整个Spring的FrameworkServlet,在某个地方,抛出了一个例外:“没有名为hashId的参数”。

原来我的requestParam没有被命名为hashId而是id,因此拦截器被正确地应用于该服务url路径。

确保excludedPattern以“/”开头,并且请求参数名称与控制器中定义的完全相同。

我想也许你的代码触发了另一个错误,url路径改为另一个url(/ error等),然后是你没有排除的/ error url路径,请检查你的代码或调试断点作为这张图片。

这是不必要的补充:

 addPathPatterns("/**") 

MappedInterceptor.java: