spring-boot--redis调整token过期时间
redis调整token过期时间
- 方法截图
- 问题描述
- 实现
- 这是用来给redis来设置值和过期时间的方法
- 📋 TimeUnit 主要取值
- 设置成永久时间
- 对现有方法进行改造
方法截图
问题描述
本次之所以修改过期时间是因为根据需求需要记住密码这个功能,开发完成后需要长期记住密码,这样就需要使用到长期有效的过期时间,这种情况下我们选用的是30天失效然后登录
但是在涉及到cas的时候这个方案就存在问题,因为我们的鉴权依赖于父级平台传过来的相关信息生成的token,由于无法监听父级是否鉴权失效,导致咱们不能够自主的将身份令牌失效了,所以就需要用到将token调整成为永不过期的了
实现
这是用来给redis来设置值和过期时间的方法
// key: 名称
// value: 值
// timeout: 过期时间
// timeUnit 时间类型
redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
📋 TimeUnit 主要取值
TimeUnit 值 中文含义 示例 相当于秒数
TimeUnit.NANOSECONDS 纳秒 1秒 = 1,000,000,000纳秒 1/1,000,000,000
TimeUnit.MICROSECONDS 微秒 1秒 = 1,000,000微秒 1/1,000,000
TimeUnit.MILLISECONDS 毫秒 1秒 = 1,000毫秒 1/1,000 TimeUnit.SECONDS 秒 60秒 =
1分钟 1 TimeUnit.MINUTES 分钟 60分钟 = 1小时 60 TimeUnit.HOURS 小时 24小时 =
1天 3,600 TimeUnit.DAYS 天 7天 = 1周 86,400
设置成永久时间
其中不配置时间和时间类型就可以设置永久时间
redisTemplate.opsForValue().set(key, value);
对现有方法进行改造
这样改造的好处就是在传值的时候对特殊需要调整过期时间的可以通过-1设置成永远都不过期,还可以兼容让别的方法的过期时间继续执行
/*** 缓存基本的对象,Integer、String、实体类等** @param key 缓存的键值* @param value 缓存的值* @param timeout 时间* @param timeUnit 时间颗粒度*/public <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit){if (timeout > 0) {redisTemplate.opsForValue().set(key, value, timeout, timeUnit);} else {// 永久缓存redisTemplate.opsForValue().set(key, value);}}