MyInterceptor类
import com.lza.serviceedu.exception.GuoxueException;
import com.lza.serviceedu.util.JwtTokenUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
/**
* 自定义拦截器
*/
public class MyInterceptor implements HandlerInterceptor {
//true即放行
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 设置返回为json格式,使用UTF-8
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=utf-8");
//验证token
String token = request.getHeader("token");
System.out.println("传入的token是"+token);
if(StringUtils.isEmpty(token)){
//为空,抛出异常
throw new GuoxueException(20001, "还没有登录");
}
if(!JwtTokenUtil.checkToken(token)){
throw new GuoxueException(20001, "token无效");
}
System.out.println("拦截器·启动");
return true;
}
}
MyConfig类
package com.lza.serviceedu.handler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 配置拦截器
*/
@Configuration
public class MyConfig implements WebMvcConfigurer {
@Autowired
private MyInterceptor myInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 添加拦截器
//InterceptorRegistration interceptor = registry.addInterceptor(myInterceptor);
registry.addInterceptor(myInterceptor)
.addPathPatterns("/**").excludePathPatterns("/serviceedu/member/login")//放行登陆路径
.excludePathPatterns("/doc.html/**")
.excludePathPatterns("swagger/**")
.excludePathPatterns("/swagger-ui.html")
.excludePathPatterns("swagger-ui.html")
.excludePathPatterns("/webjars/**")
.excludePathPatterns("/swagger-ui.html/*")
.excludePathPatterns("/swagger-resources")
.excludePathPatterns("/swagger-resources/**")
.excludePathPatterns("/v2/**");
}
@Override
public void addCorsMappings(CorsRegistry registry) {
//本应用的所有方法都会去处理跨域请求
registry.addMapping("/**")
//允许远端访问的域名
.allowedOrigins("http://localhost:8080")
//允许请求的方法("POST", "GET", "PUT", "OPTIONS", "DELETE")
.allowedMethods("*")
//允许请求头
.allowedHeaders("*");
}
}