excludePathPatterns失效问题
做项目的时候想添加拦截器白名单 不做拦截的项目
然后添加过滤
registry.addInterceptor(loginInterceptor).addPathPatterns("/**").excludePathPatterns("/**/projects/**/").excludePathPatterns("/doc.html").excludePathPatterns("/**/*.js").excludePathPatterns("/**/*.css")
然后发现没有效
还是会发现是401被我的拦截器拦截 说我没有登录。
在网上找了很久才发现
测试的时候找一个没有的页面 ,如果没有被拦截返回404算是成功了
比如访问: http://localhost:8990/projects/a
按理来说应该是返回404的 但是结果被我的拦截器拦截了
说没有权限 返回401
这个时候我们会误以为excludePathPatterns失效了
其实这个是我们的一个假象
我们访问一个页面时候springboot发现我们这个页面不存在自动会跳转至error页面
这个时候跳转至error页面其实是被拦截器拦截了
所以会觉得是excludePathPatterns失效了。
我们只需要把error页面排除就好了
参考:https://blog.csdn.net/myth_g/article/details/80547608
我也纠结了很久,然后发现自己智障了,其实是有效的,但是当你访问http://localhost:8001/index.html的时候,可能index.html不存在,然后spring报错,自动跳到/error显示错误,但是这个路径会被自己的拦截器拦截,这就给人一种拦截器的exclude不起作用的错觉,其实是起了作用的,所以要想拦截器正常工作,只需把/error路径也exclude一下