2012-08-03 24 views
6

Tengo una aplicación Symfony con 2 áreas, una para clientes que acceden desde una página web y otra para llamadas API desde AJAX y servicios web.¿Cómo autenticar en 2 firewalls symfony2 diferentes al mismo tiempo?

Cada una de estas áreas está protegida con un firewall por sí mismo. La interfaz WEB está autenticada con un formulario de inicio de sesión y la API con http_basic.

Ambos firewall funcionan bien, pero cuando la interfaz WEB realiza una llamada AJAX a la interfaz API, el navegador solicita al usuario que vuelva a iniciar sesión, incluso cuando ya inició sesión (mediante el formulario de inicio de sesión). Esto es lo que quiero evitar Me gustaría que ambos firewalls se autenticaran al mismo tiempo para evitar este aviso.

He visto otra pregunta con exactamente el mismo problema. Pero ellos están utilizando http_basic autenticación en ambos cortafuegos, de modo, la solución propuesta de trabajo nos't en mi caso:

Authenticate multiple symfony2 firewalls with one login form

Mi 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: ~ 

Respuesta

6

Es posible que desee ver aquí: Authenticate multiple symfony2 firewalls with one login form no hay solución al problema similar existe

citado:

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

Cité esta respuesta, es un problema muy similar, la diferencia es que estoy usando dos métodos de autenticación diferentes (http básico sin estado y el otro usando cookies) Ya he probado la configuración propuesta pero simplemente funcionó – Xocoatzin

+1

@Xocoatzin, diferente los métodos de autenticación no deberían ser un problema para tener un contexto compartido entre los firewalls. Por ejemplo, estoy haciendo lo mismo con el cortafuegos de formulario de inicio de sesión estándar y otro que se autentica contra el servidor SSO. Tienen diferentes tipos de tokens de autenticación. – Dziamid

Cuestiones relacionadas