我在Symfony2中有两个角色的应用程序:ROLE_ADMIN和ROLE_PARTNER。我也有一些公共页面。所有公共页面都以URL"/public/"开头。我想保护排除这些公共项目的所有应用程序。
我当前的配置:
access_control:
- { path: /.*, role: ROLE_PARTNER|ROLE_ADMIN }
- { path: /public/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
但它工作错误(循环重定向)。
更改订单:
access_control:
- { path: ^/public/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_PARTNER|ROLE_ADMIN }
第二种选择是完全关闭公共部分的安全:
firewalls:
public:
pattern: ^/public/
security: false
添加:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
请参阅中的"常见陷阱"http://symfony.com/doc/current/book/security.html#using-a-的传统登录