package com.fdkankan.fusion.interceptor; import com.alibaba.fastjson.JSONObject; import com.fdkankan.fusion.common.ResultCode; import com.fdkankan.fusion.common.ResultData; import com.fdkankan.fusion.common.util.RedisKeyUtil; import com.fdkankan.redis.constant.RedisKey; import com.fdkankan.redis.util.RedisUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @Component @Slf4j public class TokenInterceptor implements HandlerInterceptor { @Autowired private RedisUtil redisUtil; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { response.setContentType("text/html;charset=UTF-8"); String token = request.getHeader("token"); if(StringUtils.isEmpty(token)){ this.needLogin(request,response); return false; } try { String fuToken = RedisKeyUtil.loginToken + token; if(redisUtil.hasKey(fuToken)){ redisUtil.expire(fuToken,6 * 60 * 60); String redisKey = String.format(RedisKey.TOKEN_V3,token); redisUtil.expire(redisKey,6 * 60 * 60); return true; } }catch (Exception e){ e.printStackTrace(); } this.needLogin(request,response); return false; } private void needLogin(HttpServletRequest request, HttpServletResponse response) { try { String result = JSONObject.toJSONString(ResultData.error(ResultCode.USER_NOT_LOGIN)); response.getWriter().append(result); } catch (IOException e) { log.info("LoginInterceptor|needLogin|IOException|" + e); e.printStackTrace(); } } }