若依修改Token有效期与自动续期

专栏收录该内容

Hi I'm Shendi



设置Token有效期

application.yml 中的 token:expireTime 处,单位为分钟


除此之外还可以在 com.wms.framework.web.service.TokenService 中的refreshToken处,进行如下更改,去掉有效期,永不过期(不推荐)

// redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);

// 永不过期
redisCache.setCacheObject(userKey, loginUser);


设置自动续期时间

若依是自带自动续期的,但是是在离过期时间只剩20分钟,这个时候进行任何操作才会自动续期,对于某些场景,如硬件设备这种需要长待机的肯定不行,在issue中找到了答案,通过在 com.wms.framework.web.service.TokenServiceverifyToken 函数中进行更改

例如改成离过期还剩一半时间自动续期

public void verifyToken(LoginUser loginUser)
{
    long expireTime = loginUser.getExpireTime();
    long currentTime = System.currentTimeMillis();
    if (expireTime - currentTime <= this.expireTime * MILLIS_MINUTE / 2)
    {
        refreshToken(loginUser);
    }
}

也可以更改为配置文件设置

public class TokenService {
    // 剩余多少毫秒自动续期
    @Value("${token.autoTime}")
    private long autoTime;
    
    
    public void verifyToken(LoginUser loginUser) {
        long expireTime = loginUser.getExpireTime();
        long currentTime = System.currentTimeMillis();
        if (expireTime - currentTime <= autoTime)
        {
            refreshToken(loginUser);
        }
    }
    
}

配置文件中

token:
  # 有效期还剩多久自动续期,毫秒,三个月
  autoTime: 7776000000



END

本文链接:https://sdpro.top/blog/html/article/1242.html

♥ 赞助 ♥

尽管去做,或许最终的结果不尽人意,但你不付出,他不付出,那怎会进步呢?