diff --git a/redisson-tomcat/redisson-tomcat-6/src/main/java/org/redisson/tomcat/RedissonSession.java b/redisson-tomcat/redisson-tomcat-6/src/main/java/org/redisson/tomcat/RedissonSession.java index e59905564..e58ae13a3 100644 --- a/redisson-tomcat/redisson-tomcat-6/src/main/java/org/redisson/tomcat/RedissonSession.java +++ b/redisson-tomcat/redisson-tomcat-6/src/main/java/org/redisson/tomcat/RedissonSession.java @@ -113,6 +113,10 @@ public class RedissonSession extends StandardSession { super.setValid(isValid); if (map != null) { + if (!isValid && !map.isExists()) { + return; + } + map.fastPut("session:isValid", isValid); } } diff --git a/redisson-tomcat/redisson-tomcat-6/src/main/java/org/redisson/tomcat/RedissonSessionManager.java b/redisson-tomcat/redisson-tomcat-6/src/main/java/org/redisson/tomcat/RedissonSessionManager.java index 07cc4f5ea..65dd81ac2 100644 --- a/redisson-tomcat/redisson-tomcat-6/src/main/java/org/redisson/tomcat/RedissonSessionManager.java +++ b/redisson-tomcat/redisson-tomcat-6/src/main/java/org/redisson/tomcat/RedissonSessionManager.java @@ -127,7 +127,7 @@ public class RedissonSessionManager extends ManagerBase implements Lifecycle { Session result = super.findSession(id); if (result == null && id != null) { Map attrs = getMap(id).readAllMap(); - if (attrs.isEmpty()) { + if (attrs.isEmpty() || !Boolean.valueOf(String.valueOf(attrs.get("session:isValid")))) { log.info("Session " + id + " can't be found"); return null; } diff --git a/redisson-tomcat/redisson-tomcat-7/src/main/java/org/redisson/tomcat/RedissonSession.java b/redisson-tomcat/redisson-tomcat-7/src/main/java/org/redisson/tomcat/RedissonSession.java index b82004555..91bcacb54 100644 --- a/redisson-tomcat/redisson-tomcat-7/src/main/java/org/redisson/tomcat/RedissonSession.java +++ b/redisson-tomcat/redisson-tomcat-7/src/main/java/org/redisson/tomcat/RedissonSession.java @@ -117,6 +117,10 @@ public class RedissonSession extends StandardSession { super.setValid(isValid); if (map != null) { + if (!isValid && !map.isExists()) { + return; + } + map.fastPut("session:isValid", isValid); } } diff --git a/redisson-tomcat/redisson-tomcat-7/src/main/java/org/redisson/tomcat/RedissonSessionManager.java b/redisson-tomcat/redisson-tomcat-7/src/main/java/org/redisson/tomcat/RedissonSessionManager.java index 2a53bb402..45f87b10d 100644 --- a/redisson-tomcat/redisson-tomcat-7/src/main/java/org/redisson/tomcat/RedissonSessionManager.java +++ b/redisson-tomcat/redisson-tomcat-7/src/main/java/org/redisson/tomcat/RedissonSessionManager.java @@ -105,7 +105,7 @@ public class RedissonSessionManager extends ManagerBase { Session result = super.findSession(id); if (result == null && id != null) { Map attrs = getMap(id).readAllMap(); - if (attrs.isEmpty()) { + if (attrs.isEmpty() || !Boolean.valueOf(String.valueOf(attrs.get("session:isValid")))) { log.info("Session " + id + " can't be found"); return null; } diff --git a/redisson-tomcat/redisson-tomcat-8/src/main/java/org/redisson/tomcat/RedissonSession.java b/redisson-tomcat/redisson-tomcat-8/src/main/java/org/redisson/tomcat/RedissonSession.java index b0132f570..7d37c4d31 100644 --- a/redisson-tomcat/redisson-tomcat-8/src/main/java/org/redisson/tomcat/RedissonSession.java +++ b/redisson-tomcat/redisson-tomcat-8/src/main/java/org/redisson/tomcat/RedissonSession.java @@ -118,6 +118,10 @@ public class RedissonSession extends StandardSession { super.setValid(isValid); if (map != null) { + if (!isValid && !map.isExists()) { + return; + } + map.fastPut("session:isValid", isValid); } } diff --git a/redisson-tomcat/redisson-tomcat-8/src/main/java/org/redisson/tomcat/RedissonSessionManager.java b/redisson-tomcat/redisson-tomcat-8/src/main/java/org/redisson/tomcat/RedissonSessionManager.java index b16d6c075..21f71bfea 100644 --- a/redisson-tomcat/redisson-tomcat-8/src/main/java/org/redisson/tomcat/RedissonSessionManager.java +++ b/redisson-tomcat/redisson-tomcat-8/src/main/java/org/redisson/tomcat/RedissonSessionManager.java @@ -105,7 +105,8 @@ public class RedissonSessionManager extends ManagerBase { Session result = super.findSession(id); if (result == null && id != null) { Map attrs = getMap(id).readAllMap(); - if (attrs.isEmpty()) { + + if (attrs.isEmpty() || !Boolean.valueOf(String.valueOf(attrs.get("session:isValid")))) { log.info("Session " + id + " can't be found"); return null; }