拦截器配置信息:
package q.admin.api.config;
import q.admin.api.interceptor.ApiInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Autowired
private ApiInterceptor apiInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(apiInterceptor);
}
}
Api请求拦截器:
package q.admin.api.interceptor;
import q.admin.api.config.JwtConfig;
import q.admin.api.utils.JwtUtils;
import com.alibaba.fastjson.JSON;
import io.micrometer.core.lang.Nullable;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import q.stark.web.model.R;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.regex.Pattern;
@Slf4j
@Component
public class ApiInterceptor implements HandlerInterceptor {
@Autowired
private JwtConfig jwtConfig;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
String servletPath = request.getServletPath();
String reg = ".*(auth|download)+.*";
if (Pattern.matches(reg, servletPath)) {
return true;
}
String token = JwtUtils.getTokenRequest(request);
boolean expire = JwtUtils.isExpire(token, jwtConfig.getSecret());
if (!expire) {
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json;charset=UTF-8");
PrintWriter writer = null;
try {
writer = response.getWriter();
writer.write(JSON.toJSONString(R.fail(401, "token is expire")));
} catch (IOException e) {
log.error("exception{}", e);
} finally {
if (null != writer) {
writer.flush();
writer.close();
}
}
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
}
}