Update AnonymusSessionService.java

This commit is contained in:
Ludy87 2025-03-26 12:05:14 +01:00
parent d9755c9658
commit fe378042f0
No known key found for this signature in database
GPG Key ID: 92696155E0220F94

View File

@ -1,9 +1,14 @@
package stirling.software.SPDF.config.anonymus.session;
import java.time.Duration;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@ -15,15 +20,28 @@ public class AnonymusSessionService {
@Autowired private AnonymusSessionRegistry sessionRegistry;
@Value("${server.servlet.session.timeout:120s}") // TODO: Change to 30m
private Duration defaultMaxInactiveInterval;
@Scheduled(cron = "0 0/1 * * * ?")
public void expireSessions() {
Instant now = Instant.now();
List<AnonymusSessionInfo> allNonExpiredSessions =
new ArrayList<>(sessionRegistry.getAllNonExpiredSessions());
if (allNonExpiredSessions.isEmpty()) {
log.info("Keine nicht abgelaufenen Sessions gefunden.");
return;
} else {
log.info("Es gibt {} nicht abgelaufene Sessions", allNonExpiredSessions.size());
for (AnonymusSessionInfo sessionInformation : allNonExpiredSessions) {
Date lastRequest = sessionInformation.getLastRequest();
int maxInactiveInterval = (int) defaultMaxInactiveInterval.getSeconds();
Instant expirationTime =
lastRequest.toInstant().plus(maxInactiveInterval, ChronoUnit.SECONDS);
if (now.isAfter(expirationTime)) {
log.info(
"SessionID: {} expiration time: {} Current time: {}",
sessionInformation.getSession().getId(),
expirationTime,
now);
sessionInformation.setExpired(true);
}
}
}
}