diff --git a/src/main/java/stirling/software/SPDF/config/anonymus/session/AnonymusSessionService.java b/src/main/java/stirling/software/SPDF/config/anonymus/session/AnonymusSessionService.java index 42584343..c5b8d907 100644 --- a/src/main/java/stirling/software/SPDF/config/anonymus/session/AnonymusSessionService.java +++ b/src/main/java/stirling/software/SPDF/config/anonymus/session/AnonymusSessionService.java @@ -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 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); + } } } }