elunez / eladmin

eladmin jpa 版本:项目基于 Spring Boot 2.6.4、 Jpa、 Spring Security、Redis、Vue的前后端分离的后台管理系统,项目采用分模块开发方式, 权限控制采用 RBAC,支持数据字典与数据权限管理,支持一键生成前后端代码,支持动态路由
https://eladmin.vip/demo
Apache License 2.0
21.04k stars 7.33k forks source link

Token续期 #832

Closed kefault closed 6 months ago

kefault commented 7 months ago
public void checkRenewal(String token) {
    // 判断是否续期token,计算token的过期时间
    long time = redisUtils.getExpire(properties.getOnlineKey() + token) * 1000;
    Date expireDate = DateUtil.offset(new Date(), DateField.MILLISECOND, (int) time);
    // 判断当前时间与过期时间的时间差
    long differ = expireDate.getTime() - System.currentTimeMillis();
    // 如果在续期检查的范围内,则续期
    if (differ <= properties.getDetect()) {
        long renew = time + properties.getRenew();
        redisUtils.expire(properties.getOnlineKey() + token, renew, TimeUnit.MILLISECONDS);
    }
}

/**
 * 获取登录用户RedisKey
 * @param token /
 * @return key
 */
public String loginKey(String token) {
    Claims claims = getClaims(token);
    String md5Token = DigestUtil.md5Hex(token);
    return properties.getOnlineKey() + claims.getSubject() + "-" + md5Token;
}

Token续期这里涉及到的redis key是不是有问题?

zxm82081372 commented 6 months ago

我也发现了,long time返回的是-2000

elunez commented 6 months ago

已修复