From 2101d21a78c92a8616b42df5fffc25936750e9ff Mon Sep 17 00:00:00 2001 From: Ludy87 Date: Sat, 5 Apr 2025 17:29:54 +0200 Subject: [PATCH] Update AnonymusSessionListener.java --- .../session/AnonymusSessionListener.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/main/java/stirling/software/SPDF/config/anonymus/session/AnonymusSessionListener.java b/src/main/java/stirling/software/SPDF/config/anonymus/session/AnonymusSessionListener.java index 0b776689d..93b56cee9 100644 --- a/src/main/java/stirling/software/SPDF/config/anonymus/session/AnonymusSessionListener.java +++ b/src/main/java/stirling/software/SPDF/config/anonymus/session/AnonymusSessionListener.java @@ -94,6 +94,29 @@ public class AnonymusSessionListener implements HttpSessionListener, SessionsInt } } + // Expire first session sorted by last request time aufsteigend + public void expireFirstSession(String sessionId) { + sessions.values().stream() + .filter(info -> !info.isExpired()) + .filter(info -> !info.getSessionId().equals(sessionId)) + .sorted((s1, s2) -> s1.getLastRequest().compareTo(s2.getLastRequest())) + .findFirst() + .ifPresent( + session -> { + AnonymusSessionInfo sessionInfo = (AnonymusSessionInfo) session; + sessionInfo.setExpired(true); + try { + log.info( + "Session {} expired by first Session", + sessionInfo.getSession().getId()); + } catch (IllegalStateException e) { + log.info( + "Session {} already invalidated", + sessionInfo.getSession().getId()); + } + }); + } + // Mark all sessions as expired public void expireAllSessions() { sessions.values() @@ -177,7 +200,7 @@ public class AnonymusSessionListener implements HttpSessionListener, SessionsInt @Override public int getMaxApplicationSessions() { - return 5; + return getMaxUserSessions(); } @Override