Symfony2+;Twig:为经过身份验证的用户和匿名用户使用模板

Symfony2+;Twig:为经过身份验证的用户和匿名用户使用模板,symfony,twig,Symfony,Twig,我刚接触symfony和twig,对安全、防火墙和模板有些头疼 我想做的是有一个显示顶栏的“基本”模板。如果用户未登录,我希望顶部栏显示“您未登录”,如果用户已登录,则显示“欢迎用户U”消息。 因为这个我放了一个 {% if is_granted('IS_AUTHENTICATED_FULLY') %} 在“基本”模板中,以区分登录用户和匿名用户,但我在安全上下文令牌方面存在问题 我的公共路径(不受防火墙保护)是: 之后,有些操作路径只能访问经过身份验证的用户: /myapp/action1

我刚接触symfony和twig,对安全、防火墙和模板有些头疼

我想做的是有一个显示顶栏的“基本”模板。如果用户未登录,我希望顶部栏显示“您未登录”,如果用户已登录,则显示“欢迎用户U”消息。 因为这个我放了一个

{% if is_granted('IS_AUTHENTICATED_FULLY') %}
在“基本”模板中,以区分登录用户和匿名用户,但我在安全上下文令牌方面存在问题

我的公共路径(不受防火墙保护)是:

之后,有些操作路径只能访问经过身份验证的用户:

/myapp/action1
/myapp/action2
...
/myapp/actionN
问题是,一旦用户登录我的“基地”,就会在actions1、…、actionN视图中显示欢迎消息,但当用户转到“主页”或“帮助”页面时,消息是“您未登录”


有些人也有类似的情况?你是怎么解决的?如何配置路由器和安全文件?

防火墙不共享安全上下文。因此,当某个操作不在防火墙后面时,您无法访问用户信息。尝试将整个应用程序置于防火墙后(并允许匿名用户):

确保匿名用户可以访问登录路径

/myapp/action1
/myapp/action2
...
/myapp/actionN
firewalls:
    secured_area:
        pattern: ^/
        anonymous: ~
        form_login:
            check_path: /login_check
            login_path: /login
        logout:
            path:   /logout
            target: /
access_control:
    - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/action, roles: ROLE_USER }