SpringBoot拦截器失效问题excludePathPatterns失效问题

2022-06-29 07:55:41

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一下

  • 作者:金轮哥哥小坏蛋
  • 原文链接:https://blog.csdn.net/weixin_46633487/article/details/116197706
    更新时间:2022-06-29 07:55:41