关于SpringBoot拦截器拦截静态资源的问题
作者:普通网友
这篇文章主要介绍了关于SpringBoot拦截器拦截静态资源的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
SpringBoot拦截器拦截静态资源
使用springboot2.0+的版本建立拦截器拦截访问时,发现将静态的css/js资源也拦截了。
此时需要在拦截器中配置放行资源。
直接上代码
//设置拦截,释放静态文件 registry.addInterceptor(new LoginHandlerInterceptero()).addPathPatterns("/**") .excludePathPatterns("/user/login","/login.html","/css/**","/js/**");
放行"/css/**"资源。
有些使用放行static文件夹来放行所有的静态资源,不过SpringBoot默认扫描static包下的静态资源,所以好像不管用。
下图是一次项目中配置的静态资源释放,
对文件结构不是很清楚,所以直接配置释放所有文件。
springboot拦截器为什么拦截静态资源
项目目录结构如下所示
首先是以继承的方式注册拦截器配置
@Configuration public class SpringMvcSupport_extends extends WebMvcConfigurationSupport { @Autowired private LoginInterceptor loginInterceptor; @Override protected void addInterceptors(InterceptorRegistry registry) { //配置拦截器 registry.addInterceptor(loginInterceptor). //对所有的资源进行拦截,包括静态资源 addPathPatterns("/**") .excludePathPatterns("/login.html","/js/**","/css/**","/lib/**"); }
此时访问静态资源得到如下结果:
这种方式会拦截静态资源我也不知道原因是什么希望后续补坑
但是如果以实现接口的形式来注册拦截器的话就不会拦截静态资源
@Configuration public class SpringMvcSupport implements WebMvcConfigurer { @Autowired private LoginInterceptor loginInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { //配置拦截器 registry.addInterceptor(loginInterceptor). //对所有的资源进行拦截,包括静态资源 addPathPatterns("/**") .excludePathPatterns("/login.html","/js/**","/css/**","/lib/**"); }
运行项目此时访问静态资源就可以成功访问:
这个问题卡了很久很久/(ㄒoㄒ)/~~
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- springboot设置加载静态资源的路径(spring.resources.static-locations)
- SpringBoot中的static静态资源访问、参数配置、代码自定义访问规则详解
- springboot拦截器不拦截静态资源,只拦截controller的实现方法
- springboot应用中静态资源访问与接口请求冲突问题解决
- SpringBoot2.x过后static下的静态资源无法访问的问题
- SpringBoot如何访问html和js等静态资源配置
- springboot+thymeleaf打包成jar后找不到静态资源的坑及解决
- SpringBoot无法访问/static下静态资源的解决
- SpringBoot静态资源及原理解析