diff --git a/core/lib/Drupal/Core/Session/SessionManager.php b/core/lib/Drupal/Core/Session/SessionManager.php index 95495cfd03..888145d8b0 100644 --- a/core/lib/Drupal/Core/Session/SessionManager.php +++ b/core/lib/Drupal/Core/Session/SessionManager.php @@ -6,6 +6,7 @@ use Drupal\Core\Database\Connection; use Drupal\Core\DependencyInjection\DependencySerializationTrait; use Symfony\Component\HttpFoundation\RequestStack; +use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface; use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage; /** @@ -312,15 +313,20 @@ protected function getSessionDataMask() { $mask = array_fill_keys(array_keys($_SESSION), TRUE); // Ignore the metadata bag, it does not contain any user data. - $mask[$this->metadataBag->getStorageKey()] = FALSE; // Ignore attribute bags when they do not contain any data. + $data = []; foreach ($this->bags as $bag) { $key = $bag->getStorageKey(); - $mask[$key] = !empty($_SESSION[$key]); + if (!empty($_SESSION[$key])) { + $data[$key] = $_SESSION[$key]; + } + if ($bag instanceof FlashBagInterface && ($messages = $bag->peekAll())) { + $data[$key] = $messages; + } } - return array_intersect_key($mask, $_SESSION); + return $data; } /**