2016-08-10 1 views
1

Kollegen Symfonians.Symfony2 - externes Login-Formular mit CSRF-Token?

Ich muss die Anmeldung meines Systems mit dem Login-Formular des Kunden integrieren, das bereits auf ihrer Seite existiert und für ihre alten Systeme verwendet wurde. Ich verwende FOSUserBundle mit benutzerdefinierter Ansicht für das Login-Formular, aber leider möchten sie ihr Login-Formular so behalten wie es ist ("aus Gründen"). Es ist nicht einmal auf dem gleichen Server.

Gibt es eine Möglichkeit, mein CSRF-Login-Token an ihr Formular zu übergeben (ich habe Zugriff auf ihren Code), oder muss ich CSRF bei meiner Anmeldung deaktivieren?

Antwort

1

Ich bin mir bewusst, dass er keine Antwort auf Ihre spezifische Frage Is there a way to pass my CSRF login token to their form? ist, sondern eine andere Art, eine Anmeldung von einem externen Formular zu erreichen.

Sie können programmatisch einloggen: How to programmatically login/authenticate a user?

Die Antwort wird eine „Register“ Aktion, aber es ist für Sie ähnlich. Der wichtige Teil ist dies:

$token = new UsernamePasswordToken($user, $password, "public", $user->getRoles()); 
$this->get("security.token_storage")->setToken($token); 

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

, die den Benutzer anmelden wird.

+0

Also im Grunde würde ich separate Controller-Aktion für dieses externe Formular erstellen, die zunächst die Benutzer/Pass-Daten validieren und dann Login-Ereignis versenden würde? Ich bin mir nicht sicher, ob es perfekt für meinen seltsamen Fall ist (ich habe einige On-Login Weiterleitungen zu anderen Systemen, aber zum Glück auf interactive_login Event, so könnte es funktionieren), aber ich werde es überprüfen, es kann die Lösung sein, danke . – b174008