2013-08-03 11 views
7

Ich habe eine Login-Funktion programmgesteuert implementiert.Wie zu implementieren erinnern Sie sich programmatisch in symfony2?

Dieser Code ist folgende:

$token = new UsernamePasswordToken($user, $user->getPassword(), 'main', $user->getRoles()); 
$this->get('security.context')->setToken($token); 

$event = new InteractiveLoginEvent($this->getRequest(),$token); 
$this->get('event_dispatcher')->dispatch('security.interactive_login', $event); 

Danach, wie implementiere ich mich erinnern?

(Ich weiß, wie man Formular verwendet, aber ich möchte mich erinnern erinnern mich programmatisch.

)

bitte helfen ...

+0

Sie können [diese Frage] (http://stackoverflow.com/questions/549) für ein allgemeines Bild überprüfen. – HamZa

Antwort

8

Versuchen RememberMeToken

$key = $this->getParameter('secret'); // your security key from parameters.yml 

$token = new RememberMeToken($user, 'main', $key); 
$this->get('security.context')->setToken($token); 
+0

Ich versuche eine Facebook-Anmeldung zu machen. Dieser meldet mich an, erstellt aber keinen Cookie. '$ token = new RememberMeToken ($ user, 'default', $ this-> getParameter ('secret')); $ this-> get ('security.token_storage') -> setToken ($ Token); ' In meinem security.yml: ' Sicherheit: Firewalls: default: Remember_Me: Schlüssel: ‚% Geheimnis % ' lebensdauer: 31536000 always_remember_me: true' – SebCar

0

Sie einen Cookie mit einer eindeutigen ID erstellen können. Speichern Sie dann dieses Cookie in einer Datenbank und überprüfen Sie diese Datenbank, wenn ein neuer Besucher die Site besucht. Wenn Sie Ihre Benutzer in einer Datenbank gespeichert haben, ist es am besten, eine zusätzliche Spalte zu erstellen, um diese Informationen zu speichern. Werfen Sie einen Blick auf FOSUserBundle.

1

Ich hatte das gleiche Problem.Sie sollten RememberMeToken statt UsernamePasswordToken verwenden.

Die Klassenparameter sind sehr ähnlich zu UsernamePasswordToken, also gehe ich nicht ins Detail.

0

habe ich die gleiche Methode wie forgottenbas vorgeschlagen, bekam aber einen Fehler zu verwenden. Ich hatte $ this- verwenden> Behälter (Symfony2):

$key = $this->container->getParameter('secret'); 

$token = new RememberMeToken($user, 'user_area', $key); 
$this->get('security.context')->setToken($token); 

$ user ist eine Instanz meiner User-Klasse und 'user_area' ist der Name meiner Firewall.

Verwandte Themen