如何同时在2个不同的symfony2防火墙上进行身份验证?

时间:2012-08-03 18:51:27

标签: security authentication symfony firewall

我有一个包含2个区域的Symfony应用程序,一个用于从网页访问的客户端,另一个用于从AJAX和Web服务进行API调用。

每个区域都有自己的防火墙保护。 WEB界面使用登录表单和带有http_basic的API进行身份验证。

两个防火墙都运行良好,但是当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: ~

1 个答案:

答案 0 :(得分: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