我有一个包含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: ~
答案 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