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: