Issue #3045349 by alexpott, mikelutz, mglaman: Lazy started sessions with session data are not saved with symfony/http-foundation 3.4.24
parent
bd59fbc64a
commit
3d7ea45cce
|
@ -216,7 +216,9 @@ class SessionManager extends NativeSessionStorage implements SessionManagerInter
|
||||||
throw new \InvalidArgumentException('The optional parameters $destroy and $lifetime of SessionManager::regenerate() are not supported currently');
|
throw new \InvalidArgumentException('The optional parameters $destroy and $lifetime of SessionManager::regenerate() are not supported currently');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->isStarted()) {
|
// Only migrate the session if the session is really started and not only
|
||||||
|
// lazy started.
|
||||||
|
if ($this->started) {
|
||||||
$old_session_id = $this->getId();
|
$old_session_id = $this->getId();
|
||||||
// Save and close the old session. Call the parent method to avoid issue
|
// Save and close the old session. Call the parent method to avoid issue
|
||||||
// with session destruction due to the session being considered obsolete.
|
// with session destruction due to the session being considered obsolete.
|
||||||
|
@ -340,4 +342,19 @@ class SessionManager extends NativeSessionStorage implements SessionManagerInter
|
||||||
->execute();
|
->execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if the session is started.
|
||||||
|
*
|
||||||
|
* Beginning with symfony/http-foundation 3.4.24, the session will no longer
|
||||||
|
* save unless this method returns true. The parent method returns true if
|
||||||
|
* $this->started is true, but we need the session to also save if we lazy
|
||||||
|
* started, so we override isStarted() here.
|
||||||
|
*
|
||||||
|
* @return bool
|
||||||
|
* True if started, false otherwise
|
||||||
|
*/
|
||||||
|
public function isStarted() {
|
||||||
|
return parent::isStarted() || $this->startedLazy;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue