Symfony2和匿名访问某些路由


Symfony2 and anonymous access to some route

使用此配置:

firewalls:
    login:
        pattern:  ^/login$
        anonymous:  ~
        security: false
    foo:
        pattern:   ^/foo$
        anonymous: ~
        security: false
    secured_area:
        pattern:    ^/
        form_login:
            login_path: /login
            check_path: /login_check
        logout:
            path:   /logout
            target: /
access_control:
    - { path: ^/, roles: ROLE_ADMIN }
    - { path: ^/foo, roles: IS_AUTHENTICATED_ANONYMOUSLY }

我希望能够匿名访问/foo。然而,当我试图去那里时,即使在清除缓存后,它也不允许我去,并重定向到登录屏幕。

如何使一条路由可以匿名访问,同时保留系统的其余部分?

更换

- { path: ^/foo, roles: IS_ANONYMOUS }

带有

- { path: ^/foo, roles: IS_AUTHENTICATED_ANONYMOUSLY }

更新

此外,我相信,你将不得不添加

- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }

以便身份验证正常工作。

有关更多信息,请查看避免常见陷阱部分。