Symfony登录不工作的多个防火墙具有相同的模式


Symfony login not working for multiple firewalls with same pattern

我有一个关于symfony安全性的问题。

我的安全。Yml的设置如下:

security:
    encoders:
        Symfony'Component'Security'Core'User'User: plaintext
        OVB'DBBundle'Entity'User'User:
            id: ovb.password.encoder
    providers:
        in_memory:
            memory:
                users:
                    test:  { password: ******, roles: 'ROLE_ADMIN' }
        main:
            entity:
                class: OVB'DBBundle'Entity'User'User
                property: email
    firewalls:
        secured_area:
            provider: in_memory
            pattern:   ^/
            anonymous: ~
            http_basic:
                realm: "Secured Test Area"
        main:
            pattern: ^/
            provider: main
            form_login:
                login_path:         /login
                check_path:         ovb_login_check
                use_referer:        true
            logout:                 true
            anonymous:              ~
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
    access_control:
        - { path: ^/, roles: ROLE_ADMIN }
        - { path: ^/login_check, roles: ROLE_USER }

正如您所看到的,我有两个具有相同模式的防火墙。第一个(secured_area)是为了保护我的测试环境(HTTP认证),第二个是为普通网站用户(表单登录)。它们单独使用时都有效,但放在一起就不行了,我认为这是因为它们使用了相同的模式。有人知道怎么做吗?

谢谢!

在您的基础security.yml:

security:
    #...
    providers:
        main:
            entity:
                class:    'OVB'DBBundle'Entity'User'User'
                property: email
        dev:
           memory:
               users:
                   admin: { password: ******, roles: 'ROLE_ADMIN' }
    firewalls:        
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern: ^/
            provider: main
            form_login:
                login_path:         /login
                check_path:         ovb_login_check
                use_referer:        true
            logout:                 true
            anonymous:              ~

在你的security_dev.yml:

security:
    firewalls:
        main:
            http_basic:
                provider: dev