Symfony2多防火墙:从其他防火墙注销


Symfony2 Multiple Firewalls: Logs out from other firewall

我有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