SpringBoot2.0拦截器WebMvcConfigurationSupport

错误如图所示

  • 控制台信息

  • 页面测试

解决方案

  • 添加静态资源处理器来过滤掉静态资源,使静态资源的请求不被拦截器拦截

  • 看一下 WebMvcConfigurationSupport 中关于静态资源的方法

addResourceHandlers

  • 重写WebMvcConfigurationSupport中的addResourceHandlers方法,添加对静态资源目录的过滤

  • 当然,还需要正确的目录结构

  • 拦截器完整代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package com.zby.config;

import com.zby.interceptor.JwtInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

//配置拦截器
@Component
@Configuration
public class JwtConfiguration extends WebMvcConfigurationSupport {

@Autowired
private JwtInterceptor jwtInterceptor;

@Override
protected void addInterceptors(InterceptorRegistry registry) {
/**
* addInterceptor :添加拦截方法
* addPathPatterns :添加拦截请求路径(/** :拦截一切请求)
* excludePathPatterns :加入白名单(此请求不拦截)
* */
//加载jwtInterceptor拦截规则
registry.addInterceptor(jwtInterceptor).addPathPatterns("/**")
.excludePathPatterns("/user/login/**","/arsenal/view","/user/index/**");//因为login之后才会生成token
}


@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/");
registry.addResourceHandler("/templates/**")
.addResourceLocations("classpath:/templates/");
super.addResourceHandlers(registry);
}

/**
* 以下WebMvcConfigurerAdapter 比较常用的重写接口
*/
// /** 解决跨域问题 **/
// public void addCorsMappings(CorsRegistry registry) ;
// /** 添加拦截器 **/
// void addInterceptors(InterceptorRegistry registry);
// /** 这里配置视图解析器 **/
// /** 视图跳转控制器 **/
// void addViewControllers(ViewControllerRegistry registry);
// void configureViewResolvers(ViewResolverRegistry registry);
// /** 配置内容裁决的一些选项 **/
// void configureContentNegotiation(ContentNegotiationConfigurer configurer);
// /** 视图跳转控制器 **/
// void addViewControllers(ViewControllerRegistry registry);
// /** 静态资源处理 **/
// void addResourceHandlers(ResourceHandlerRegistry registry);
// /** 默认静态资源处理器 **/
// void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);

}
  • 验证