JWTInterceptor.java 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package com.huimv.admin.config;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.huimv.admin.common.token.TokenConstant;
  4. import com.huimv.admin.common.token.TokenSign;
  5. import io.jsonwebtoken.Claims;
  6. import org.springframework.web.method.HandlerMethod;
  7. import org.springframework.web.servlet.HandlerInterceptor;
  8. import org.springframework.web.servlet.ModelAndView;
  9. import javax.servlet.http.HttpServletRequest;
  10. import javax.servlet.http.HttpServletResponse;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. /**
  14. * <p>
  15. * jwt拦截器
  16. * </p>
  17. *wo
  18. * @since 2021/4/19
  19. */
  20. public class JWTInterceptor implements HandlerInterceptor {
  21. //
  22. @Override
  23. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  24. // 如果不是映射到方法,则直接通过
  25. if (!(handler instanceof HandlerMethod)) {
  26. return true;
  27. }
  28. response.setContentType("application/json;charset=utf-8");
  29. // 获取token
  30. String token = request.getHeader("accessToken");
  31. if (null == token) {
  32. Map<String, Object> map = new HashMap<>();
  33. map.put("data", "token is null");
  34. map.put("code", "401");
  35. response.setStatus(401);
  36. response.getWriter().write(JSONObject.toJSONString(map));
  37. return false;
  38. } else {
  39. Claims claims = TokenSign.getClaims(token);
  40. if (claims == null) {
  41. Map<String, Object> map = new HashMap<>();
  42. map.put("data", "token is overdue");
  43. map.put("code", "403");
  44. response.setStatus(403);
  45. response.getWriter().write(JSONObject.toJSONString(map));
  46. return false;
  47. }
  48. boolean result = TokenSign.verify(token);
  49. if (result) {
  50. //更新存储的token信息
  51. TokenConstant.updateTokenMap(token);
  52. return true;
  53. }
  54. Map<String, Object> map = new HashMap<>();
  55. map.put("data", "token is null");
  56. map.put("code", "401");
  57. response.setStatus(401);
  58. response.getWriter().write(JSONObject.toJSONString(map));
  59. return false;
  60. }
  61. }
  62. @Override
  63. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
  64. }
  65. @Override
  66. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
  67. }
  68. }