SpringSession中的sessionId什么时候会过期

发布时间 2023-12-18 15:32:36作者: 沧海一滴

使用SpringSession后,每次请求后,都会把期间变更的attribute保存到redis中。

每次访问都会修改lastAccessTime

org.springframework.session.web.http.SessionRepositoryFilter#doFilterInternal

 

org.springframework.session.data.redis.RedisIndexedSessionRepository.RedisSession#saveDelta

 RedisIndexedSessionRepository.this.expirationPolicy.onExpirationUpdated(originalExpiration, this);

 第请求一次,请求所关联的session的过期时间就会延长5分钟

long sessionExpireInSeconds = session.getMaxInactiveInterval().getSeconds();
long fiveMinutesAfterExpires = sessionExpireInSeconds + TimeUnit.MINUTES.toSeconds(5);
this.redis.boundValueOps(sessionKey).append("");
this.redis.boundValueOps(sessionKey).expire(sessionExpireInSeconds, TimeUnit.SECONDS);

实际的过期时间点,最后一次访问后 maxInactiveIntervalInSeconds + 5分钟后,session过期