拦截器
自定义拦截器,实现WebMvcConfigurer
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(authInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/user/login", "/user/register", "/imserver/**", "/files/**", "/alipay/**",
"/doc.html", "/webjars/**", "/swagger-resources/**");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//配置拦截器访问静态资源
registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/favicon.ico").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
@Bean
public AuthInterceptor authInterceptor() {
return new AuthInterceptor();
}
}
增加自定义Interceptor
public class AuthInterceptor implements HandlerInterceptor {
@Autowired
private UserMapper userMapper;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
String token = request.getHeader("token");
if (StrUtil.isBlank(token)) {
throw new CustomException("401", "未获取到token, 请重新登录");
}
Integer userId = Integer.valueOf(JWT.decode(token).getAudience().get(0));
User user = userMapper.selectById(userId);
if (user == null) {
throw new CustomException("401", "token不合法");
}
return true;
}
}