Ответ 1
Короче:
- NONE: сеанс не изменяется
- MIGRATE: обновляется идентификатор сеанса, сохраняются атрибуты
- INVALIDATE: обновляется идентификатор сеанса, теряются атрибуты
Подробнее:
-
Нет стратегии: В реализации сеанса по умолчанию ничего не делается (предполагается), поэтому сеанс поддерживается из одного контекста в другой.
-
Миграция стратегии: "Переносит текущий сеанс на новый идентификатор сеанса, сохраняя все атрибуты сеанса". (Хранилище сеансов должно обновить текущий сеанс.) "Регенерировать идентификатор, который представляет это хранилище. Этот метод должен вызывать session_regenerate_id ($ destroy), если этот интерфейс не используется для объекта хранения, предназначенного для модульного или функционального тестирования, где реальная сессия PHP будет мешать тестированию. Примечание регенерировать + уничтожить не должно очищать данные сеанса в памяти, удаляя только данные сеанса из постоянного хранилища. " Таким образом, сеанс сохраняется из одного контекста в другой.
-
Недействительная стратегия: "Очищает все атрибуты сеанса и мигает и регенерирует сеанс и удаляет старый сеанс из-за сохранения". Таким образом, сеанс регенерируется из одного контекста в другой.
По вашему вопросу не было видно, какие данные сеанса вы пытаетесь извлечь.
Но в любом случае отдельный сеанс не создается для разных контекстов безопасности:
http://symfony.com/doc/current/reference/configuration/security.html#firewall-context
Данные, связанные с безопасностью (аутентификацией), хранятся под отдельным ключом (на основе имени брандмауэра). Например, если у вас есть брандмауэр с именем "main", токен аутентификации будет храниться в "_security_main", если у вас есть брандмауэр (отдельный контекст) с именем "foo", данные пользователя и связанные с ним данные будут храниться в разделе "_security_foo" и т.д.
Таким образом, кроме того → getToken → getUser (и т.д.) остальные переменные сеанса будут доступны в разных контекстах, если вы используете стратегии "none" или "migrate".
Взгляните на интерфейс сеанса для получения подробной информации (кавычки из этих файлов) поставщик/Symfony/Symfony/SRC/Symfony/Компонент/HttpFoundation/Сессия/SessionInterface.php
И реализация по умолчанию: поставщик/Symfony/Symfony/SRC/Symfony/Компонент/HttpFoundation/Сессия/session.php