TokenInterceptor.java 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.fdkankan.fusion.interceptor;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.fdkankan.fusion.common.ResultCode;
  4. import com.fdkankan.fusion.common.ResultData;
  5. import com.fdkankan.fusion.common.util.RedisKeyUtil;
  6. import com.fdkankan.redis.constant.RedisKey;
  7. import com.fdkankan.redis.util.RedisUtil;
  8. import lombok.extern.slf4j.Slf4j;
  9. import org.apache.commons.lang3.StringUtils;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Component;
  12. import org.springframework.web.servlet.HandlerInterceptor;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15. import java.io.IOException;
  16. @Component
  17. @Slf4j
  18. public class TokenInterceptor implements HandlerInterceptor {
  19. @Autowired
  20. private RedisUtil redisUtil;
  21. @Override
  22. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
  23. response.setContentType("text/html;charset=UTF-8");
  24. String token = request.getHeader("token");
  25. if(StringUtils.isEmpty(token)){
  26. this.needLogin(request,response);
  27. return false;
  28. }
  29. try {
  30. String fuToken = RedisKeyUtil.loginToken + token;
  31. if(redisUtil.hasKey(fuToken)){
  32. redisUtil.expire(fuToken,6 * 60 * 60);
  33. String redisKey = String.format(RedisKey.TOKEN_V3,token);
  34. redisUtil.expire(redisKey,6 * 60 * 60);
  35. return true;
  36. }
  37. }catch (Exception e){
  38. e.printStackTrace();
  39. }
  40. this.needLogin(request,response);
  41. return false;
  42. }
  43. private void needLogin(HttpServletRequest request, HttpServletResponse response) {
  44. try {
  45. String result = JSONObject.toJSONString(ResultData.error(ResultCode.USER_NOT_LOGIN));
  46. response.getWriter().append(result);
  47. } catch (IOException e) {
  48. log.info("LoginInterceptor|needLogin|IOException|" + e);
  49. e.printStackTrace();
  50. }
  51. }
  52. }