今天碰到一个神坑!!如何让拦截器不拦截静态资源,网上查阅了各种资料,最后得出的结论是:
(1)使用"/static/**"是无效的
egistry.addInterceptor(sessionInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/","/static/**");
(2)应该直接使用static里面的路径,如"/css/**"
registry.addInterceptor(sessionInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/","/css/**","/js/**","/img/**");
(3)关键点!!!!!千万千万不要在WebConfig类前面加上@EnableWebMvc注解,它会让你的exclude全部失效!!!!然而springboot的官方文档中的例子是加上的!!当时没有注意!
正确的写法如下:
@Configuration
//@EnableWebMvc千万不能加,谁加谁傻逼
public class WebConfig implements WebMvcConfigurer {
private static final List<String> EXCLUDE_PATH= Arrays.asList("/","/css/**","/js/**","/img/**","/media/**","/vendors/**");
@Autowired
SessionInterceptor sessionInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
/*
* 对根目录和静态文件不需要进行拦截,如果对根目录(即登录页面)进行拦截,将会导致循环重定向
*/
registry.addInterceptor(sessionInterceptor)
.addPathPatterns("/**")
.excludePathPatterns(EXCLUDE_PATH);
}
}
我是在being上查到了这个问题,随后翻看官方文档,突然发现它这么写:
如果要使用springboot自动配置,那么就不能加上@EnableWebMvc注解!!without!!!!
搞了一个多小时!!继续干!