Security 具有symfony2的多个防火墙

Security 具有symfony2的多个防火墙,security,symfony,Security,Symfony,如何使用symfony2拥有多个防火墙 文档中提到了这一点,但从未解释过。在yml配置文件中: security: firewalls: filrewall_1: ... filrewall_2: ... 如果您有问题,请发表评论 另请参见:我终于找到了答案。这是最终的工作担保。yml: security: encoders: entity_admin: cl

如何使用symfony2拥有多个防火墙


文档中提到了这一点,但从未解释过。

在yml配置文件中:

security:
    firewalls:
        filrewall_1:
            ...
        filrewall_2:
            ...
如果您有问题,请发表评论


另请参见:

我终于找到了答案。这是最终的工作担保。yml:

security:
    encoders:
        entity_admin:
            class: MyBundle\Entity\AdminUser
            algorithm: sha512
            iterations: 5000
            encode_as_base64: false
        entity_members:
            class: MyBundle\Entity\User
            algorithm: sha512
            iterations: 1000
            encode_as_base64: false

    providers:
        entity_admin:
            entity:
                class: MyBundle\Entity\AdminUser
                property: username
        entity_members:
            entity:
                class: MyBundle\Entity\User
                property: username

    firewalls:
        admin_secured_area:
            pattern: /admin/.*
            provider: entity_admin
            anonymous: ~
            form_login:
                check_path: /admin/login_check
                login_path: /admin/login
            logout:
                path:   /admin/logout
                target: /admin/
        members_secured_area:
            pattern: /members/.*
            provider: entity_members
            anonymous: ~
            form_login:
                check_path: /members/login_check
                login_path: /members/login
            logout:
                path:   /members/logout
                target: /members/

    access_control:
        admin_login:
            path: /admin/login
            roles: IS_AUTHENTICATED_ANONYMOUSLY
        admin_area:
            path: /admin/.*
            roles: ROLE_ADMIN
        members_login:
            path: /members/login
            roles: IS_AUTHENTICATED_ANONYMOUSLY
        members_register:
            path: /members/register
            roles: IS_AUTHENTICATED_ANONYMOUSLY
        members_area:
            path: /members/.*
            roles: ROLE_USER

和一个

您可以让用户在一个防火墙中进行身份验证,并通过配置相同的防火墙
上下文
在其他防火墙上进行身份验证。以这个app/config/security.yml为例:

security:
    firewalls:
        filrewall_1:
            ...
            context: my_context
        filrewall_2:
            ...
            context: my_context

问题是我需要不同的编码器、提供程序。。。这是我尝试过的,我想我完全错了。。。是的,它很混乱:)如果你想要两个防火墙不复制所有配置,只需在
security.firewalls
下放置另一个防火墙配置即可。我尝试过清理一下你的配置文件,我还没有测试过,但这是一个好的开始:。我看到的另一件事是,你应该将你的提供者从
main
重命名为
secured\u area
,或者在你的
secured\u area
防火墙下提供一个
provider\u name
(带“main”值),使用这种配置,我不明白我怎么能有两个不同的实体和不同的算法,不同的安全区域…假设您有两个实体
User
Account
,看看这个:我想我们很接近了,我有一个错误:InvalidConfigurationException:无法识别的选项“security.providers.main”下的“entity\u User,entity\u Account”这是我目前的进展:任何帮助都将受到赞赏。您是否设法使它与此解决方案一起工作?当我尝试访问登录检查url时,我在这里解释了错误: