从访问控制列表中排除公共页面

时间:2012-09-03 14:27:17

标签: php symfony acl

我在Symfony2中有2个角色的应用程序:ROLE_ADMIN和ROLE_PARTNER。我也有一些公共页面。所有公共页面都以URL“/ public /”开头。我想保护所有被排除这些公共项目的申请。

我当前的配置:

access_control:
    - { path: /.*, role: ROLE_PARTNER|ROLE_ADMIN }
    - { path: /public/.*, role: IS_AUTHENTICATED_ANONYMOUSLY }

但它的工作原理错误(​​循环重定向)。

2 个答案:

答案 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

中的“常见陷阱”