Symfony 安全和 twig 渲染功能

Symfony security and twig Render funcion

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

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

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

安全路由内容渲染完成! 我希望得到某种异常或登录 window! 这是一个错误还是我遗漏了什么?

以这种方式呈现控制器时,您将绕过路由器,因此与路由相关的证券也会被绕过。

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

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

通过使用 twig 中的 "render",您将跳过与路由相关的安全检查,如果您不需要在匿名上下文中获取内容,您可以在呈现控制器之前检查 Twig 中的角色,类似于:

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