【问题标题】:multiple firewalls with symfony2多个带有 symfony2 的防火墙
【发布时间】:2011-08-02 10:38:40
【问题描述】:

symfony2如何拥有多个防火墙?

这在文档中提到但从未解释过。

【问题讨论】:

标签: security symfony


【解决方案1】:

我终于找到了答案。这是最终的工作 security.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

还有一个pastebin

【讨论】:

【解决方案2】:

在你的 yml 配置文件中放:

security:
    firewalls:
        filrewall_1:
            ...
        filrewall_2:
            ...

如果您有问题,请发表评论。

另请参阅:http://symfony.com/doc/current/reference/configuration/security.html

【讨论】:

  • 问题是我需要不同的编码器,供应商...这是我尝试过的,我认为我完全错了...pastebin.com/1t8w9NtT
  • 是的,它很乱 :) 如果你想要 2 个防火墙不要复制所有配置,只需在 security.firewalls 下放置另一个防火墙配置。我试着稍微清理一下你的配置文件,我还没有测试过,但这是一个好的开始:pastebin.com/hzGjCJe3。我看到的另一件事是,您应该将您的提供商从 main 重命名为 secured_area 或在您的 secured_area 防火墙下提供 provider_name(带有“主”值)
  • 使用这种配置,我不明白我怎么能拥有 2 个具有不同算法、不同安全区域的不同实体...
  • 假设你有两个实体UserAccount,看看这个:pastebin.com/5nS0x7bc
  • 我想我们已经接近了,我有这个错误:InvalidConfigurationException: Unrecognized options "entity_user, entity_account" under "security.providers.main"
【解决方案3】:

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

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

http://symfony.com/doc/current/reference/configuration/security.html#firewall-context

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 1970-01-01
    • 2013-07-08
    相关资源
    最近更新 更多