4

如何在非安全页面上获取当前登录用户?

我只有一个通过防火墙保护的 /account/ 页面,而其他页面不受保护。

我的全局导航具有以下模板(简化):

{% if app.user %}
  <a href="/account/data">...
  <a href="/logout>...
{% else %}
  <a href="/account/login">....
{% endif %}

问题:在不安全的页面上也应该可以访问带有注销链接的导航,但是没有 UsernamePasswordToken...并且 symfony 显示登录链接,而不是 /logout 和 /account/data 链接。我使用匿名侦听器配置了所有其他页面,但它无法正常工作。

有解决办法吗?

4

1 回答 1

8

您无法在非防火墙页面上获取用户。为整个应用启用防火墙,允许匿名访问,并通过以下方式保护应用的特定部分access_control

security:
    firewalls:
        main:
            pattern: ^/
            anonymous: ~

    access_control:
        - { path: ^/protected, roles: ROLE_SOME }
于 2013-03-12T14:20:54.157 回答