2013-09-05 2 views
0

La fonctionnalité de se souvenir de moi crée l'amende de cookie REMEMBERME. Lorsque je redémarre mon navigateur, ce cookie est également disponible mais je ne suis pas connecté et je m'authentifie comme un anonyme dans la barre d'outils Symfony.Se souvenir de moi dans Symfony2 ne fonctionne pas après le redémarrage du navigateur

Normaly quand je vais sur mydomain.com si je suis connecté je réoriente à mydomain.com/home/calendar sinon je réoriente à 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 

Quelqu'un peut-il expliquez-moi la raison pour laquelle cela ne fonctionne pas? J'utilise Symfony 2.1.7 et FOSuserbundle.

Sur Google Chrome, le cookie REMEMBERME n'est jamais supprimé, je le vois dans les paramètres de toutes les URL. Mais sur Mozilla Firefox, si le chemin de l'attribut sous remember_me est/le cookie est en train de supprimer quand je suis redirigé sur l'URL/login. C'est comme si le cookie était supprimé uniquement sur Firefox.

Ceci est la valeur pour cookie rememberme sur Firefox

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

Essayez le défaut 'chemin 'Attribut dans la section de configuration' remember_be'. Se pourrait-il que vous visitiez réellement '/' après le redémarrage du navigateur et que votre cookie ne soit pas valide à cause de cela? –

Répondre

3

Si vous utilisez une autre propriété que nom d'utilisateur pour authentifier l'utilisateur, le cookie peut être sauver le nom d'utilisateur alors que votre script attend une autre propriété, comme le courrier électronique .

Vous pouvez remplacer le comportement du service remember me par défaut. Voir cette réponse: https://stackoverflow.com/a/20550520/3096524

1

@nikolajosipovic est droite.

Essayez d'aller à votre entité utilisateur fournisseur par exemple (AppBundle/Entité/User.php)

et ajoutez un courriel à serialize()/unserialize() Méthodes:

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); 

} 
Questions connexes