package com.huimv.admin.config; import com.alibaba.fastjson.JSONObject; import com.huimv.admin.common.token.TokenConstant; import com.huimv.admin.common.token.TokenSign; import io.jsonwebtoken.Claims; 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.util.HashMap; import java.util.Map; /** *

* jwt拦截器 *

*wo * @since 2021/4/19 */ public class JWTInterceptor implements HandlerInterceptor { // @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // 如果不是映射到方法,则直接通过 if (!(handler instanceof HandlerMethod)) { return true; } response.setContentType("application/json;charset=utf-8"); // 获取token String token = request.getHeader("accessToken"); if (null == token) { Map map = new HashMap<>(); map.put("data", "token is null"); map.put("code", "401"); response.setStatus(401); response.getWriter().write(JSONObject.toJSONString(map)); return false; } else { Claims claims = TokenSign.getClaims(token); if (claims == null) { Map map = new HashMap<>(); map.put("data", "token is overdue"); map.put("code", "403"); response.setStatus(403); response.getWriter().write(JSONObject.toJSONString(map)); return false; } boolean result = TokenSign.verify(token); if (result) { //更新存储的token信息 TokenConstant.updateTokenMap(token); return true; } Map map = new HashMap<>(); map.put("data", "token is null"); map.put("code", "401"); response.setStatus(401); response.getWriter().write(JSONObject.toJSONString(map)); return false; } } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }