package com.datao.config; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; //import javax.servlet.http.HttpServletRequest; //import javax.servlet.http.HttpServletResponse; import java.lang.reflect.Method; import java.util.HashMap; /** * 添加拦截器 */ //@Component public class TokenInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // System.out.println(String.format("[%s]", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())) // +" preHandle "+request.getRequestURL()); //如果不是映射到方法直接放行 if(!(handler instanceof HandlerMethod)){ return true; } HandlerMethod handlerMethod = (HandlerMethod)handler; Method method = handlerMethod.getMethod(); HashMap hashMap = new HashMap<>(); String token = request.getHeader("Authorization"); if((token == null || token.isEmpty()) && method.isAnnotationPresent(PassToken.class)) { //带有PassToken注解的方法不处理 return true; } // String msg = ""; // try { // if(token != null && token!="") { // TokenUtil.verifyToken(token.substring(7)); // return true; // } // else{ // msg = "token无效"; // } // }catch (SignatureVerificationException e){ //// e.printStackTrace(); // msg = "签名不一致"; // }catch (TokenExpiredException e){ //// e.printStackTrace(); // msg = "令牌过期异常"; // }catch (AlgorithmMismatchException e) { //// e.printStackTrace(); // msg = "算法不匹配异常"; // }catch (InvalidClaimException e){ //// e.printStackTrace(); // msg = "失效的claim异常"; // }catch (Exception e){ //// e.printStackTrace(); // msg = "token无效"; // } // AjaxResult result = new AjaxResult(HttpStatus.UNAUTHORIZED.value(),msg); // // String resultJson = JSON.toJSONString(result); // response.setContentType("application/json;charset=utf-8"); // response.getWriter().print(resultJson); return false; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // System.out.println("postHandle"); HandlerInterceptor.super.postHandle(request, response, handler, modelAndView); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // System.out.println("afterCompletion"); HandlerInterceptor.super.afterCompletion(request, response, handler, ex); } }