讓我給你這個場景。我有一個調用/ auth的AJAX調用 - 該頁面依次檢查用戶是否已通過身份驗證並設置了幾個會話變量(代碼如下)。通過AJAX調用創建Symfony 2會話後不會持續
$session = $this->getRequest()->getSession();
$session->set('fbid', $fbid);
$session->set('name', $name);
// not sure if this is even needed - get the same with or without
//$session->save();
現在,如果我轉到另一個頁面並嘗試訪問該會話,它將返回空。
如果我將這些會話設置在常規頁面上(不是通過XMLHttpRequest/AJAX訪問的),它可以正常工作。
這裏是我的會話設置在config.yml
:
session:
cookie_lifetime: 3600
cookie_httponly: false
我認爲這個問題可能已經httponly
,但是這並沒有做到這一點。
有什麼建議嗎?我錯過了什麼嗎?
* UPDATE *
這裏是我的安全/防火牆設置:
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
login:
pattern: ^/demo/secured/login$
security: false
secured_area:
pattern: ^/demo/secured/
form_login:
check_path: /demo/secured/login_check
login_path: /demo/secured/login
logout:
path: /demo/secured/logout
target: /demo/
我並沒有改變防火牆的設置,在所有的,從我所知道的,它不應該通過XMLHttpRequest影響/auth
調用。
*更新2 *
我結束了2臺後加入$session->shutdown()
(是的,我知道關機不是一個Session對象的方法)。它最終得到一個錯誤,但因爲它開始工作,它實際上保存到$ _SESSION。所以,如果這個錯誤迫使它保存到$ _SESSION,必須有一個實際的方法來強制保存。真奇怪......
您的AJAX路線與安全防火牆模式匹配嗎? –
我剛剛添加了我的防火牆設置的問題,從我可以告訴,它不符合它。 – xil3
我認爲這與Symfony 2有關,因爲某些原因,實際上沒有將會話數據寫入$ _SESSION。有沒有辦法強制它寫? – xil3