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

时间:2015-10-26 11:19:21

标签: php security symfony authentication firewall

我有 2个防火墙(一个用于管理面板,一个用于注册用户)和 2个内存提供商(一个用于管理员,一个用于注册用户)用于我的Symfony2应用程序 - 太动态了吧?

现在,我尝试访问注册用户的路线,Boom!我按预期显示了一个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 }

我想要的只是每个防火墙登录一次。

有类似的经历吗?或者提出解决方案?

1 个答案:

答案 0 :(得分:1)

在两个注销防火墙设置上使用invalidate_session:false:

logout:
    path:             mylogoutpath
    target:           MyBundle_homepage
    invalidate_session: false

invalidate_session:false可以解决问题。 请参阅:https://codedump.io/share/OfziwjHXBHbB