java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot拦截器拦截静态资源

关于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ㄒ)/~~

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文