我在Symfony2中有2个角色的应用程序:ROLE_ADMIN和ROLE_PARTNER。我也有一些公共页面。所有公共页面都以URL“/ public /”开头。我想保护所有被排除这些公共项目的申请。
我当前的配置:
access_control:
- { path: /.*, role: ROLE_PARTNER|ROLE_ADMIN }
- { path: /public/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }
但它的工作原理错误(循环重定向)。
答案 0 :(得分:8)
更改顺序:
access_control:
- { path: ^/public/, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, role: ROLE_PARTNER|ROLE_ADMIN }
第二个选项是完全关闭公共部分的安全性:
firewalls:
public:
pattern: ^/public/
security: false
答案 1 :(得分:3)
添加:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
请参阅http://symfony.com/doc/current/book/security.html#using-a-traditional-login-form
中的“常见陷阱”