【问题标题】:Symfony security and twig Render funcionSymfony 安全性和树枝渲染功能
【发布时间】:2015-02-15 18:28:55
【问题描述】:

我有这种情况。 我的网站有一个安全的部分。我认为,安全性是正确配置的。 如果我尝试从浏览器打开安全 URL,系统会要求我输入用户名和密码。 Symfony 分析器在登录后正确显示用户上下文 主页(根路由)不安全(分析器在此处显示匿名上下文)

现在的问题: 如果,在主页的树枝模板中,我放了这样的东西

{{ render(path('secured_route')) }}

安全路由的内容被渲染! 我希望得到某种异常或登录窗口! 这是一个错误还是我错过了什么?

【问题讨论】:

    标签: security symfony routes twig render


    【解决方案1】:

    以这种方式渲染控制器时,您绕过了路由器,因此与路由相关的安全也被绕过了。

    您可以做的最好的事情是使用@Security 注释将您的控制器限制为登录用户:

    /**
     * @Security("has_role('IS_AUTHENTICATED_REMEMBERED')")
     */
    

    【讨论】:

    • 所以,每个控制器都应该检查权限。在路由级别管理安全似乎毫无意义。
    • 每个控制器和每个服务方法以及是否需要安全检查。
    【解决方案2】:

    通过使用 twig 中的“render”,您将跳过与路由相关的安全检查,如果您不需要在匿名上下文中获取内容,您可以在渲染控制器之前从 Twig 中检查角色,例如:

    {% if is_granted('ROLE_USER') %}
      {{ render(path('secured_route')) }}
    {% endif %}
    

    【讨论】:

    • 然后不要在视图中使用 {{ render(path('secured_route')) }},并从控制器处理安全性
    猜你喜欢
    • 2017-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2012-07-27
    • 1970-01-01
    相关资源
    最近更新 更多