JWTInterceptor.java 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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. * @since 2021/4/19
  18. */
  19. public class JWTInterceptor implements HandlerInterceptor {
  20. @Override
  21. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  22. // 如果不是映射到方法,则直接通过
  23. if (!(handler instanceof HandlerMethod)) {
  24. return true;
  25. }
  26. response.setContentType("application/json;charset=utf-8");
  27. // 获取token
  28. String token=request.getHeader("accessToken");
  29. if (null==token){
  30. Map<String,Object> map=new HashMap<>();
  31. map.put("data","token is null");
  32. map.put("code","401");
  33. response.setStatus(401);
  34. response.getWriter().write(JSONObject.toJSONString(map));
  35. return false;
  36. }else {
  37. Claims claims = TokenSign.getClaims(token);
  38. if (claims == null){
  39. Map<String,Object> map=new HashMap<>();
  40. map.put("data","token is overdue");
  41. map.put("code","403");
  42. response.setStatus(403);
  43. response.getWriter().write(JSONObject.toJSONString(map));
  44. return false;
  45. }
  46. boolean result= TokenSign.verify(token);
  47. if (result){
  48. //更新存储的token信息
  49. TokenConstant.updateTokenMap(token);
  50. return true;
  51. }
  52. Map<String,Object> map=new HashMap<>();
  53. map.put("data","token is null");
  54. map.put("code","401");
  55. response.setStatus(401);
  56. response.getWriter().write(JSONObject.toJSONString(map));
  57. return false;
  58. }
  59. }
  60. @Override
  61. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
  62. }
  63. @Override
  64. public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
  65. }
  66. }