0

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

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

{% if is_granted('IS_AUTHENTICATED_FULLY') %}

在“基本”模板中区分登录用户和匿名用户,但我对安全上下文令牌有疑问。

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

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

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

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

问题是,一旦用户登录到我的“基地”,就会在操作 1、...、actionN 的视图中显示欢迎消息,但是当用户转到“主页”或“帮助”页面时,消息是“您没有登录在”。

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

4

1 回答 1

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。

于 2011-09-27T07:14:29.063 回答