解决springboot2.0版本配置拦截器会拦截静态资源的问题

解决springboot2.0版本配置拦截器会拦截静态资源的问题


springboot1.0+版本配置拦截器后,自定义拦截器使用的是继承WebMvcConfigurerAdapter重写常用方法的方式来实现的.静态文件不需要进行放行,springboot会自动对静态资源进行放行,不需要我们手动配置访问静态资源路径,2.0+版本后,WebMvcConfigurerAdapter类被遗弃了,我们自定义拦截器只有通过实现WebMvcConfigurer接口或者继承WebMvcConfigurationSupport类来实现。

此处以实现WebMvcConfigurer接口的方法来实现自定义拦截器。代码如下:

    @Bean
    public WebMvcConfigurer webMvcConfigurer(){
        WebMvcConfigurer webMvcConfigurer = new WebMvcConfigurer() {
            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                //springboot 2.0版本以前已经做好了静态资源映射,2.0以后需要自己配置
                registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**")
                        .excludePathPatterns("/", "/index.html", "/user/login", "/springboot/")
                        .excludePathPatterns("/static/**");
            }

            /**
             * 添加静态资源文件,外部可以直接访问地址
             * @param registry
             */
            @Override
            public void addResourceHandlers(ResourceHandlerRegistry registry) {
            //如下配置则能可以访问src/main/resources/static下面的文件, 
           //如访问static文件夹下的XX.css,则输入:localhost:8080/static/xx.css 即可访问 
           //注意   registry.addResourceHandler("/static/**")配置得是静态资源访问路径,访问时必须将            //该路径添加进去
               registry.addResourceHandler("/static/**")
                 .addResourceLocations("classpath:/static/");
                WebMvcConfigurer.super.addResourceHandlers(registry);
            }

            @Override
            public void addViewControllers(ViewControllerRegistry registry) {
                registry.addViewController("/").setViewName("login");
                registry.addViewController("/index.html").setViewName("login");
                registry.addViewController("/login").setViewName("login");
                registry.addViewController("/main.html").setViewName("dashboard");
            }
        };
        return webMvcConfigurer;
    }

你可能感兴趣的:(springboot)