2012-08-03 12 views
6

Ich habe eine Symfony-Anwendung mit zwei Bereichen, einen für Clients, die von einer Webseite aus zugreifen, und einen anderen für API-Aufrufe von AJAX und Web-Services.Wie authentifiziere ich mich gleichzeitig an 2 verschiedenen symfony2 Firewalls?

Jeder dieser Bereiche ist mit einer eigenen Firewall geschützt. Die WEB-Schnittstelle wird mit einem Anmeldeformular und der API mit http_basic authentifiziert.

Beide Firewalls funktionieren einwandfrei, aber wenn die WEB-Schnittstelle einen AJAX-Aufruf an die API-Schnittstelle sendet, fordert der Browser den Benutzer auf, sich erneut anzumelden, auch wenn er bereits angemeldet war (über das Anmeldeformular). Das möchte ich vermeiden. Ich möchte, dass beide Firewalls gleichzeitig authentifiziert wurden, um diese Aufforderung zu vermeiden. Ich habe eine andere Frage mit genau das gleiche Problem gesehen. Aber sie sind mit http_basic Authentifizierung auf beiden Firewalls, so wird die vorgeschlagene Lösung did't auf meinem Fall:

Authenticate multiple symfony2 firewalls with one login form

Mein security.yml

#.... 
firewalls: 
    api: 
     pattern: ^/API 
     context: primary_auth 
     stateless: true 
     http_basic: 
      realm: "API: Please log in" 

    web: 
     pattern: ^/ 
     context: primary_auth 
     form_login: 
      check_path: /login_check 
      login_path: /login 
      provider: fos_userbundle 
     logout: 
      path: /logout 
      target:/
     anonymous: ~ 

Antwort

6

Vielleicht möchten Sie hier sehen: Authenticate multiple symfony2 firewalls with one login form gibt es Lösung ähnliches Problem gibt

zitiert:

security: 
# providers etc ... 

    firewall: 
     main: 
      pattern: # ... 
      provider: my_users 
      http_basic: ~ 
      context: primary_auth # new 
     api: 
      pattern: # ... 
      provider: my_users 
      http_basic: ~ 
      context: primary_auth # new 
+3

Ich zitierte diese Antwort, es ist ein sehr ähnliches Problem, der Unterschied ist im mit zwei verschiedenen Authentifizierungsmethoden (statusless http Basic und die andere mit Cookies) Ich habe bereits versucht, die Konfiguration vorgeschlagen, aber es hat einfach nicht funktioniert – Xocoatzin

+1

@ Xocoatzin, anders Authentifizierungsmethoden sollten kein Problem für einen gemeinsamen Kontext zwischen Firewalls sein. Zum Beispiel mache ich dasselbe mit der Standard-Login-Form-Firewall und einer anderen, die sich gegenüber dem SSO-Server authentifiziert. Sie haben verschiedene Arten von Authentifizierungs-Tokens. – Dziamid

Verwandte Themen