我有一個應用程序正在對過濾器中的外部服務器進行身份驗證。在該過濾器,我嘗試使用的Symfony的setAttribute()
方法設置一對夫婦在用戶會話屬性:在會話結束時是否有Symfony回調?
$this->getContext()->getUser()->setAttribute('myAttribute', 'myValue');
什麼我發現是,如果我設置屬性後立即拋售$_SESSION
。另一方面,如果我撥打getAttribute('myAttribute')
,我就會回到我剛纔輸入的內容。
一直以來,我假設讀/寫用戶屬性是讀/寫會話的同義詞,但似乎是一個不正確的假設。是否有計時問題?我沒有收到任何非對象錯誤,所以似乎用戶已完全初始化。
這裏的斷開連接在哪裏?
謝謝。
UPDATE
這發生的原因是因爲我在myUser::shutdown()
一些代碼,清理出了一堆東西。由於myUser
鬆散地等同於$ _SESSION(至少在屬性方面),因此我假定在每個會話結束時調用shutdown()
方法。不是。它似乎在每次請求結束時被調用,這就是爲什麼我的屬性從未被設置。
現在,我仍然想知道是否有會話關閉回調。有人知道嗎?
謝謝。我討厭不得不改變我的配置和擴展會話類來覆蓋一個方法,但它絕對是一個有效的解決方案。 – 2010-06-16 15:27:29