【问题标题】:Symfony2+Twig: Using a template both for authenticated and anonymous userSymfony2+Twig:对经过身份验证的用户和匿名用户都使用模板
【发布时间】:2011-09-25 10:23:49
【问题描述】:

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

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

{% if is_granted('IS_AUTHENTICATED_FULLY') %}

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

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

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

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

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

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

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

【问题讨论】:

    标签: symfony twig


    【解决方案1】:

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

    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 可以被匿名用户访问。

    【讨论】:

      猜你喜欢
      • 2017-04-20
      • 2018-12-16
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多