【发布时间】:2011-08-02 10:38:40
【问题描述】:
symfony2如何拥有多个防火墙?
这在文档中提到但从未解释过。
【问题讨论】:
-
这是我目前的进度:pastebin.com/3ke7FgLj 任何帮助将不胜感激
symfony2如何拥有多个防火墙?
这在文档中提到但从未解释过。
【问题讨论】:
我终于找到了答案。这是最终的工作 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
【讨论】:
在你的 yml 配置文件中放:
security:
firewalls:
filrewall_1:
...
filrewall_2:
...
如果您有问题,请发表评论。
另请参阅:http://symfony.com/doc/current/reference/configuration/security.html
【讨论】:
security.firewalls 下放置另一个防火墙配置。我试着稍微清理一下你的配置文件,我还没有测试过,但这是一个好的开始:pastebin.com/hzGjCJe3。我看到的另一件事是,您应该将您的提供商从 main 重命名为 secured_area 或在您的 secured_area 防火墙下提供 provider_name(带有“主”值)
User 和Account,看看这个:pastebin.com/5nS0x7bc
您可以通过配置同一防火墙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
【讨论】: