2013-12-18 33 views
3

儘管有堆棧溢出的其他問題,但我無法用所有提供的信息來解決問題。
這就是爲什麼我決定創建一個新的。

所以我採取了記得我的功能在我的登錄表單有一個複選框,看起來像這樣:Symfony2:記住我當重新打開瀏覽器時cookie被刪除

<input type="checkbox" id="form_saveCredentials" name="form[saveCredentials]"> 

在登錄時一切都看起來不錯和Cookie會設置正確

cookie gets set correctly

在整個瀏覽器會話中,Cookie保持活動狀態。
但是,當我關閉瀏覽器並重新打開它的cookie仍然存在(沒有導航到我的本地主機呢!)。

,當我瀏覽到我的網站在本地主機上的Cookie會根據響應頭

enter image description here

我不知道爲什麼Cookie會在導航網站上刪除刪除。

也許問題就出在了remember_me功能

firewalls: 
    somefirewall: 
     form_login: 
      remember_me: true 
remember_me: 
     key: %secret% 
     lifetime: 31536000 
     remember_me_parameter: 'form[saveCredentials]' 
     path:/
     domain: ~ 

就如何解決這個問題的任何想法securtiy.yml設置? 在此先感謝

+0

我也發現錯誤,你有沒有找到解決方案? – Joe

+0

我沒有找到我目前正在開發的項目的解決方案。儘管當我在新項目中使用記憶功能時,問題消失了。在那個項目中,我擴展了fosuserbundle而不是覆蓋它。我想這解決了它,但無論如何。 –

回答

5

最近我有這個問題,這裏是我找到了解決辦法:爲什麼cookie被刪除

的原因是因爲該cookie包含不匹配任何Symfony的知道用戶信息關於。它不能根據cookie來登錄用戶,所以它只是刪除它。在我的情況下,問題是我的UserProvider類中的字符串不正確。具體的方法是supportsClass。它應該實際返回'AppBundle \ Entity \ User'時返回'AppBundle\Security\User'。這導致Symfony無法根據cookie中的信息找到任何用戶,然後它只會刪除cookie並繼續前進。

如果你進入這個文件,你可以做更多的疑難解答:vendor/symfony/symfony/src/Symfony/Component/Security/Http/RememberMe/TokenBasedRememberMeServices.php。在processAutoLoginCookie中玩耍,看看你是否搞不清楚!

祝你好運!

+0

這個答案應該被接受。我有同樣的問題,但不完全一樣的原因,但涉及相同的方法('TokenBasedRememberMeServices :: processAutoLoginCookie')。在我的情況下,我使用電子郵件而不是用戶名來驗證用戶身份。即使您指定默認提供者應使用另一個字段而不是「用戶名」,記住我的服務仍會將用戶名存儲到Cookie中。您必須完全按照此處所述的方式編寫自己的用戶提供程序:http:// symfony。com/doc/current/cookbook/security/entity_provider.html#using-a-custom-query-to-load-the-user –

+0

完美,這是一個惡毒的錯誤! – AlexisWbr

-2

如果您的用戶名是有效的電子郵件但不等於電子郵件,則可能會出現此問題。刪除用戶名中的任何@。

相關問題