У меня есть приложение, которое проходит проверку подлинности на внешнем сервере в фильтре. В этом фильтре я пытаюсь установить пару атрибутов сеанса для пользователя с помощью метода setAttribute()
Symfony:
$this->getContext()->getUser()->setAttribute( 'myAttribute', 'myValue' );
Я обнаружил, что, если я сброслю $_SESSION
сразу после установки атрибута. С другой стороны, если я позвоню getAttribute( 'myAttribute' )
, я получу именно то, что вставил.
Все это время я предполагал, что чтение / запись пользовательских атрибутов было синонимом чтения / записи в сеансе, но это неверное предположение. Есть ли проблема времени? Я не получаю никаких необъектных ошибок, поэтому кажется, что пользователь полностью инициализирован.
Где здесь отключение?
Спасибо.
UPDATE
Причина, по которой это происходило, заключается в том, что у меня был myUser::shutdown()
код, который очищал кучу вещей. Поскольку myUser
слабо эквивалентно $ _SESSION (по крайней мере, в отношении атрибутов), я предполагал, что метод shutdown()
будет вызываться в конце каждого сеанса. Это не. Кажется, он вызывается при закрытии каждого запроса, поэтому мои атрибуты никогда не устанавливались.
Теперь, однако, меня интересует, есть ли обратный вызов для закрытия сеанса. Кто-нибудь знает?