7

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

这些区域中的每一个都由其自身的防火墙保护。WEB 界面使用登录表单进行身份验证,API 使用http_basic.

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

我见过另一个问题完全相同的问题。但是他们http_basic在两个防火墙上都使用了身份验证,因此,提出的解决方案不适用于我的情况:

使用一个登录表单验证多个 symfony2 防火墙

我的安全.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: ~
4

1 回答 1

7

你可能想看这里:Authenticate multiple symfony2 firewalls with one login form there's solution to similar question there

引:

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
于 2012-10-19T15:40:45.890 回答