2016-07-21 3 views
0

Der folgende Code wird automatisch Login-Benutzer erzwingen und es funktioniert gut. Ich möchte hinzufügen, dass ich mich an Funktionalität erinnere. Also, wenn wir Login-Benutzer erzwingen und dann auch hinzufügen erinnere mich an, so beim nächsten Mal er automatisch auf der Website einloggen.Symfony force login und merken Sie sich

// Auto Authenticate User 
     $firewall = 'user_firewall'; 
     $token = new UsernamePasswordToken($user, null, $firewall, $user->getRoles()); 
     $this->get('security.token_storage')->setToken($token); 

     $session = $this->get('session'); 
     $session->set('_security_'.$firewall, serialize($token)); 
     $session->save(); 
+0

http://symfony.com/doc/current/cookbook/security/remember_me.html –

+0

müssen Sie mich ohne Formular erinnern. – Basit

Antwort

1

Verwendung RemeberMeToken und es gibt keine Notwendigkeit, sie manuell in der Sitzung zu setzen, Feuer nur interactive_login Ereignis:

// Auto Authenticate User 
$firewall = 'user_firewall'; 
$key = $this->getParameter('secret'); //from parameters.yml 
$token = new RememberMeToken($user, $firewall, $key); 
$this->get('security.token_storage')->setToken($token); 

$this->get('event_dispatcher')->dispatch(
    SecurityEvents::INTERACTIVE_LOGIN, 
    new InteractiveLoginEvent($request, $token) 
); 

EDIT:

 yourProviderKey: # oauth i guess 
      remember_me: true 
     remember_me: 
      secret: '%secret%' 
      lifetime: 604800 # 1 week in seconds 
      path: /
      #always_remember_me: true # optional 
: diese zu Ihrem security.yml hinzufügen

Wenn dies nicht funktioniert, versuchen Sie ?_remember_me=1 am Ende Ihrer check_path hinzuzufügen.

+0

Wow, das sieht im Vergleich zu anderen Lösungen, die ich gefunden habe, einfach aus. Wie kann ich überprüfen, ob dies korrekt funktioniert? – Basit

+0

Der obige Code setzt das Cookie 'REMEMBERME' nicht, aber wenn ich mich mit dem Formular anmelde und mich erinnere, dann setzt das Cookie auf Ordnung. So funktioniert der obige Code nicht! – Basit

+0

kannst du deine security.yml zeigen? –