Symfony2:登录表单工作正常,但我无法访问登录信息{{app.user}}

时间:2013-04-25 07:33:17

标签: security symfony twig

在基本模板 base.html.twig 中,我编写此代码

  {% if app.user %}
    <a href="{{ path('logout') }}">Logout</a>
  {% else %}
    <a href="{{ path('register') }}">register</a> |
    <a href="{{ path('login') }}">Login</a>
  {% endif %}
登录后

  在/ profile我看到菜单中的Logout链接   但   在/(和其他页面)我看到菜单中的注册和登录链接

security:
    ...
    providers:
        administartors:
            entity: { class: DotArtBundle:User, property: username }

    firewalls:
        profile:
            pattern:    ^/profile
            http_basic: ~
            anonymous: ~
            form_login:
                check_path:  /profile/login_action
                login_path:  /login
                use_forward: false
                username_parameter: _username
                password_parameter: _password
            logout:
                path:   /profile/logout
                target: /
                invalidate_session: false
        login:
            pattern:  ^/login
            security: false

    access_control:
        - { path: ^/login,         roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/profile,       roles: ROLE_USER  }
        - { path: ^/profile/admin, roles: ROLE_ADMIN }

我如何解决这个问题?

解决方案:

我将pattern: ^/profile更改为pattern: ^/

1 个答案:

答案 0 :(得分:2)

在侧面提示,根据登录/退出检查。使用is_granted对于将来的更新应该更加可靠。

{% if is_granted('IS_AUTHENTICATED_REMEMBERED') %}
  <a href="{{ path('logout') }}">Logout</a>
{% else %}
  <a href="{{ path('register') }}">register</a> |
  <a href="{{ path('login') }}">Login</a>
{% endif %}