重写实现 DefaultInterceptor
- 注意要写
@Primary
package com.detabes.gzyanalysis.config;import cn.hutool.core.util.ObjectUtil;import com.detabes.gzyanalysis.constant.RedisConstant;import com.detabes.gzyanalysis.controller.user.vo.UserVO;import com.detabes.gzyanalysis.util.UserTokenUtil;import com.detabes.jwt.util.JwtUtil;import com.detabes.jwtweb.server.impl.DefaultInterceptor;import com.detabes.redis.core.config.RedisProxy;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Primary;import org.springframework.stereotype.Service;/*** 登录验证实现** @author tn* @className JWTCheckTokenInterceptorImpl* @date 2021-10-11 09:28*/@Service@Primary@Slf4jpublic class JWTCheckTokenInterceptorImpl extends DefaultInterceptor {private final RedisProxy redisProxy;@Value("${gzy.onlylogin:true}")private String onlylogin;public JWTCheckTokenInterceptorImpl(RedisProxy redisProxy) {this.redisProxy = redisProxy;}@Overridepublic boolean checkToken(String token) {try {UserVO userVO = UserTokenUtil.getTokenInfoByStr(token);// 存储方式(k:loginName, v:token)if(Boolean.parseBoolean(onlylogin)){Object userToken = redisProxy.hget(RedisConstant.USER_LIST_KEY + ":" + userVO.getUserNo(),userVO.getUserNo());if(ObjectUtil.isNull(userToken)||!token.equals(userToken)){// redis 中没有该用户的登录信息 qie token 当前token跟redis中的token要一直return false;}}// 验证token有效期return JwtUtil.verity(token);}catch (Exception e){log.error("redis中获取用户失败",e);return false;}}}
