SpringBoot + thymeleaf 关于 WebMvcConfigurer 无法排除静态资源的解决办法

390 阅读1分钟

写了一个拦截器用于登录状态控制,写入了这么一句话,让其在所有路径生效:

registration.addPathPatterns("/**");

以及静态资源排除

  registry.addResourceHandler("/resources/**")
  .addResourceLocations("classpath:/resources/");

结果所有的静态文件还是被拦截了,仔细分析了一下,问题出在thymeleaf上,以登录页面为例:

<link rel="stylesheet" th:href = "@{css/theme.css}"/>

那么这个css文件就交由thymeleaf处理了,也就是引用路径为 ....../css/theme.css

在网页上测试也果然如此(此时不生效拦截器)

在这里插入图片描述

因此,只需要在拦截器排除对应路径就好了

如下: 根据你tymeleaf所代理的路径来就行

registration.excludePathPatterns("/css/**","/js/**","/pic/**");

在这里插入图片描述 成功!!!

当然你也可以选择不代理静态文件,我更推荐不代理,那么只需正常配置静态资源排除即可。