我有2个防火墙(一个用于管理面板和一个用于注册用户)和2个内存提供程序(一个用于管理和一个用于注册用户)为我的Symfony2应用程序-太动态了吧?
现在,我试图访问注册用户的路由,砰!我看到了一个BasicAuth对话框。
接下来,当我试图访问admin的路由时,我再次看到另一个BasicAuth对话框——正如预期的那样。然而,当我导航回任何注册用户路由时,我再次看到BasicAuth对话框,我得出结论,每次我被要求提供与我正在导航的路由匹配的防火墙的身份验证对话框的凭据时,我自动从另一个防火墙注销。
这是我的security.yml
文件。
security:
role_hierarchy:
ROLE_ADMIN: ROLE_USER
providers:
walang_forever:
memory:
users:
user:
password: test
roles: 'ROLE_USER'
nailad_forever:
memory:
users:
admin:
password: test
roles: 'ROLE_ADMIN'
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin_gugma:
pattern: ^/admin
http_basic:
provider: nailad_forever
main_gugma:
pattern: ^/user
http_basic:
provider: walang_forever
encoders:
Symfony'Component'Security'Core'User'User: plaintext
access_control:
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/user, roles: ROLE_USER }
我想要的只是每个防火墙登录一次。
有类似的经历吗?或者建议的解决方案?
在两个注销防火墙设置中使用invalidate_session: false:
logout:
path: mylogoutpath
target: MyBundle_homepage
invalidate_session: false
invalidate_session: false可以解决这个问题。参见:https://extractcode.com