2012-08-03 65 views
6

我有两个区,一个为客户提供从网页中的其他从AJAX API调用和Web服务访问Symfony的应用。如何同时在2个不同的symfony2防火墙上进行身份验证?

这个领域中的每一个保护在其自己的防火墙。 WEB界面通过登录表单和API与http_basic进行验证。

两个防火墙都能正常工作,但是当WEB界面对API接口进行AJAX调用时,浏览器会提示用户再次登录,即使他已经登录(通过登录表单)。这是我想要避免的。我希望两个防火墙都同时进行身份验证,以防止此提示。

我已经看到了完全相同同样的问题,另外一个问题。但他们使用两个防火墙http_basic认证,因此,该解决方案提出了我的情况我以前不工作:

Authenticate multiple symfony2 firewalls with one login form

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

回答

6

你可能想在这里看看: Authenticate multiple symfony2 firewalls with one login form有解决类似的问题还有

报价:

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

我引用这个答案,这是一个非常类似的问题,所不同的是使用两种不同的身份验证方法(无状态的HTTP基本和其他使用cookie)香港专业教育学院已经尝试提出了配置,但它只是没工作了 – Xocoatzin 2012-10-22 05:50:01

+1

@Xocoatzin IM,不同身份验证方法不应该成为防火墙之间共享上下文的问题。例如,我正在使用标准登录表单防火墙和另一个针对SSO服务器进行身份验证的方法。他们有不同类型的认证令牌。 – Dziamid 2013-08-07 15:10:40

相关问题