问题 Symfony2和匿名访问某些路由


使用此配置:

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 匿名访问。但是,当我尝试去清除缓存后,它将不允许我重定向到登录屏幕。

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


5292
2018-02-27 08:59


起源



答案:


更换

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

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

UPDATE

另外,我相信,你必须补充

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

用于身份验证以正常工作

欲了解更多信息,请查看 避免常见的陷阱 部分 这里


13
2018-02-27 09:10



好的问题更新,我尝试了,但它仍然重定向到登录(我也清除了缓存)。 - Tower
好吧看起来很喜欢它只是不起作用 dev 环境因某种原因。 - Tower
@rFactor,现在很难说出错了。尝试在日志中找到线索。 - Molecular Man
我遇到了同样的问题,我的防火墙不允许在dev中的一条路由上匿名 - 问题是我们只计划在dev中使用该路由。你弄明白是什么造成的吗? - Jessica
@Jessica你试过切换access_control规则的顺序吗? - dlondero


答案:


更换

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

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

UPDATE

另外,我相信,你必须补充

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

用于身份验证以正常工作

欲了解更多信息,请查看 避免常见的陷阱 部分 这里


13
2018-02-27 09:10



好的问题更新,我尝试了,但它仍然重定向到登录(我也清除了缓存)。 - Tower
好吧看起来很喜欢它只是不起作用 dev 环境因某种原因。 - Tower
@rFactor,现在很难说出错了。尝试在日志中找到线索。 - Molecular Man
我遇到了同样的问题,我的防火墙不允许在dev中的一条路由上匿名 - 问题是我们只计划在dev中使用该路由。你弄明白是什么造成的吗? - Jessica
@Jessica你试过切换access_control规则的顺序吗? - dlondero