2013-12-18 31 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

如果您的用户名是有效的电子邮件但不等于电子邮件,则可能会出现此问题。删除用户名中的任何@。

相关问题