diff --git a/src/Session/CacheSessionHandler.php b/src/Session/CacheSessionHandler.php index abfda22..e4f1f7c 100644 --- a/src/Session/CacheSessionHandler.php +++ b/src/Session/CacheSessionHandler.php @@ -27,10 +27,20 @@ public function __construct( public function read(string $sessionId): string|false { $session = $this->cache->get($sessionId, false); - if ($session === false || !isset($this->sessionIndex[$sessionId])) { + if ($session === false) { + if (isset($this->sessionIndex[$sessionId])) { + unset($this->sessionIndex[$sessionId]); + $this->cache->set(self::SESSION_INDEX_KEY, $this->sessionIndex); + } return false; } + if (!isset($this->sessionIndex[$sessionId])) { + $this->sessionIndex[$sessionId] = $this->clock->now()->getTimestamp(); + $this->cache->set(self::SESSION_INDEX_KEY, $this->sessionIndex); + return $session; + } + if ($this->clock->now()->getTimestamp() - $this->sessionIndex[$sessionId] > $this->ttl) { $this->cache->delete($sessionId); return false;