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

时间:2011-09-25 10:23:49

标签: symfony twig

我是symfony和twig的新手,我对安全性,防火墙和模板感到头疼。

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

{% if is_granted('IS_AUTHENTICATED_FULLY') %}

在“基础”模板中区分已登录用户和匿名用户,但我遇到安全上下文令牌问题。

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

/myapp/ 
/myapp/home 
/myapp/about 
/myapp/help

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

/myapp/action1
/myapp/action2
...
/myapp/actionN

问题是,一旦用户登录我的“基地”在actions1,...,actionN的视图中显示欢迎消息,但当用户转到“主页”或“帮助”页面时,消息是“你”未登录“。

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

1 个答案:

答案 0 :(得分:2)

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

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 }

确保匿名用户可以访问login_path。