1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package com.fdkankan.scene.Interceptor;
- import cn.hutool.http.ContentType;
- import com.alibaba.fastjson.JSON;
- import com.fdkankan.common.constant.ErrorCode;
- import com.fdkankan.redis.constant.RedisKey;
- import com.fdkankan.redis.util.RedisUtil;
- import com.fdkankan.web.response.ResultData;
- import java.io.IOException;
- import java.nio.charset.StandardCharsets;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.http.HttpHeaders;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import org.springframework.web.servlet.HandlerInterceptor;
- @Component
- @Slf4j
- public class TokenInterceptor implements HandlerInterceptor {
- @Autowired
- private RedisUtil redisUtil;
- @Override
- public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
- response.setHeader(HttpHeaders.CONTENT_TYPE, ContentType.JSON.getValue());
- response.setCharacterEncoding(StandardCharsets.UTF_8.name());
- String token = request.getHeader("token");
- log.info("token:{}", token);
- if(StringUtils.isEmpty(token)){
- this.needLogin(request,response);
- return false;
- }
- try {
- String redisKey = String.format(RedisKey.USER_TOKEN_KEY, token);
- log.info("redisKey:{}", redisKey);
- if(redisUtil.hasKey(redisKey)){
- log.info("redis有token");
- redisUtil.expire(redisKey,2 * 60 * 60);
- return true;
- }
- }catch (Exception e){
- log.error("校验token缓存出错", e);
- }
- log.info("redis无token");
- this.needLogin(request,response);
- return false;
- }
- private void needLogin(HttpServletRequest request, HttpServletResponse response) {
- try {
- ResultData error = ResultData.error(ErrorCode.TOKEN_NOT_FOUND);
- response.getWriter().append(JSON.toJSONString(error));
- } catch (IOException e) {
- log.info("LoginInterceptor|needLogin|IOException|" + e);
- e.printStackTrace();
- }
- }
- }
|