2013-09-05 56 views
0

记住我的功能创建REMEMBERME cookie罚款。当我重新启动浏览器时,Cookie也可用,但我没有登录,而且我在Symfony工具栏中以匿名方式进行身份验证。在Symfony2中记住我无法在重新启动浏览器后工作

Normaly当我去mydomain.com如果我登录,我重定向到mydomain.com/home/calendar如果不是我重定向到mydomain.com/login

#security.yml 
main: 
     pattern: ^/.+ 
     switch_user: { role: ROLE_SUPER_ADMIN, parameter: _steal_user } 
     form_login: 
      provider: fos_userbundle 
      csrf_provider: form.csrf_provider 
      always_use_default_target_path: true 
      default_target_path: bleep_university_calendar 
      login_path: /login 
      check_path: /login_check 
      remember_me: true 
     remember_me: 
      key: "%secret%" 
      lifetime: 31536000 
      always_remember_me: true 
      remember_me_parameter: _remember_me 
      path: /home/calendar 
      domain: ~ 
     logout: true 
     anonymous: false 
     context: university 

人请解释一下它不起作用的原因?

我正在使用Symfony 2.1.7和FOSuserbundle。

在Google Chrome浏览器中,Cookie REMEMBERME永远不会被删除,我会将其看到所有网址的设置中。但在Mozilla Firefox上,如果remember_me下的属性路径为/,则Cookie在我被重定向到URL /登录时正在删除。这就像Cookie只在Firefox上删除。

这是与rememberMe的cookie在Firefox

expires : 1409988370 
host : "localhost"  
isDomain : false   
isHttpOnly : true  
isSecure : false   
maxAge : undefined  
name : "REMEMBERME"  
path : "/"  
rawValue : "QmxlZXBcTWFzdGVyU2Vydml...WJlOWI3ZTMyNzkxZGQyZGU3"  
value : "QmxlZXBcTWFzdGVyU2Vydml...WJlOWI3ZTMyNzkxZGQyZGU3" 
+0

尝试拖欠'路径'remember_be'配置部分下的属性。在浏览器重新启动后你是否实际访问过'/',并且你的cookie因为它而无效? –

回答

3

如果你使用的是其他属性比用户名对用户进行认证,那么该cookie可能会保存用户名,而你的脚本需要另一个属性的值,如电子邮件。

您可以覆盖默认的记住我的服务行为。看到这个答案:https://stackoverflow.com/a/20550520/3096524

1

@nikolajosipovic是正确的。

尝试到您的用户提供实体EG(的appbundle /实体/ user.php的)

,并添加电子邮件序列化()/反序列化()方法:

public function serialize() 
{ 
    return serialize(array(
     $this->id, 
     $this->username, 
     $this->email, //Add email 
     $this->password, 
     $this->isActive, 
     )); 
} 

public function unserialize($serialized) 
{ 
    list(
     $this->id, 
     $this->username, 
     $this->email, //Add email 
     $this->password, 
     $this->isActive, 
    ) = unserialize($serialized); 

} 
相关问题