Redis实战-session共享之修改登录拦截器
在上一篇中Redis实战之session共享,我们知道了通过Redis实现session共享了,那么token怎么续命呢?怎么刷新用户呢?本来咱们就通过拦截器来实现这两个功能。登录拦截器优化:先来看看现在拦截器情况:拦截流程:当拦截器拦截需要拦截到的url时候,才会在拦截器中更新用户token的过期时间。那如果,访问了不被拦截的路径,就不会给token续命的。这样就会导致用户token过期,而重新
在上一篇中Redis实战之session共享,我们知道了通过Redis实现session共享了,那么token怎么续命呢?怎么刷新用户呢?本来咱们就通过拦截器来实现这两个功能。
登录拦截器优化:
先来看看现在拦截器情况:

拦截流程:
当拦截器拦截需要拦截到的url时候,才会在拦截器中更新用户token的过期时间。那如果,访问了不被拦截的路径,就不会给token续命的。这样就会导致用户token过期,而重新登录的。这样是不对的。

当访问以上这些路径的是,就不会自动更新用户的token过期时间了。

将获取用户,存放threadLocal及刷新token放到新的拦截器中。
第一个拦截器就叫做:刷新token拦截器;第二个拦截器就叫做:用户拦截器
import cn.hutool.core.bean.BeanUtil;
import com.hmdp.dto.UserDTO;
import com.hmdp.utils.UserHolder;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import static com.hmdp.constants.RedisConstants.LOGIN_USER_TOKEN_KEY;
import static com.hmdp.constants.RedisConstants.LOGIN_USER_TOKEN_TTL;
/**
* @author 凯哥Java
* @description 刷新用户token的烂机器
* @company
*/
public class RefreshTokenInterceptor implements HandlerInterceptor {
private StringRedisTemplate stringRedisTemplate;
/**
* 因为这个类不能被spring管理,所以不能直接注入RedisTemplate对象。通过构造函数传递
*
* @param stringRedisTemplate
*/
public RefreshTokenInterceptor(StringRedisTemplate stringRedisTemplate) {
this.stringRe原创不易,完成人机校验,阅读全文
相关推荐
REDISRedis实战之session共享工作小总结过滤器,拦截器,监听器的区别若依(RUOYI)Springboot管理系统数据权限过滤(二)——SQL拦截器工作小总结&小工具类利用 MyBatis Plus 拦截器动态管理数据访问权限工作小总结过滤器 和 拦截器的 6个区别,别再傻傻分不清了GIT项目Spring Boot 整合Mybatis、Druid、PageHelper、Swagger 、AOP、过滤器、拦截器、thymeleaf 基础入门demoREDISRedis实战15-Redis实现分布式锁思路学习笔录-SPRING BOOTspring boot框架学习8-【干货】spring boot的web开发(4)-自定义拦截器处理权限