我在Spring Framework上工作,我想写一个拦截器,我最终写了它,它工作得很好。但在一个点上,我不希望我的拦截器拦截请求,这是当用户想要注销和会话被无效。但它并没有按照我的期望发生。
我通过扩展WebMvcConfigurerAdapter并使用addInterceptors方法添加拦截器,代码如下。
public void addInterceptors(InterceptorRegistry registry) {
super.addInterceptors(registry);
registry.addInterceptor( loggerInterceptor );
registry.addInterceptor( authenticationInterceptor ).excludePathPatterns("/invalidate");
}
字符串
我在这里做错了什么吗?excludePathPatterns - >我的URL以/invalidate结尾。所以请指导我,如何设计一个正确的模式。
6条答案
按热度按时间7z5jn7bk1#
你试过下面吗?
字符串
Reference
请参阅此java文档以更好地理解。
bwitn5fc2#
我想可能是你的代码触发了另一个错误,url路径更改为另一个url(/error等),然后/error url路径,你没有排除,请检查你的代码或调试断点为this picture.
jk9hmnmh3#
不需要添加:
字符串
MappedInterceptor.java:
的数据
flvlnr444#
在我的例子中,我必须调试Spring的整个FrameworkServlet,在某个地方,抛出一个异常说:“没有名为hashId的参数”。
结果我的requestParam没有被命名为hashId,而是id,所以拦截器被正确地应用到服务URL路径。
确保excludedPattern以“/”开头,并使用控制器中定义的参数名称进行请求。
bgibtngc5#
我在实现类似的需求时发现了同样的问题。如果你使用的是Spring 5+**版本,请在下面的代码中尝试。
字符串
请使用Spring 5+版本的WebMvcConfigurer。希望这可以帮助正在寻找类似解决方案的人。
wxclj1h56#
在我的例子中,它缺少尾随斜杠。
第一个月
而不是
registry.addInterceptor(fooInterceptor()).excludePathPatterns("/internal/bar/**");
个