我有这种情况。 我的网站有一个安全的部分。我认为,安全性是正确配置的。 如果我尝试从浏览器打开安全URL,我会被要求输入用户名和密码。 Symfony探查器在登录后正确显示用户上下文 主页(根路由)不受保护(分析器在此显示匿名上下文)
现在问题: 如果,在主页的树枝模板中,我放了这样的东西
{{ render(path('secured_route')) }}
呈现安全路线的内容! 我希望得到某种异常或登录窗口! 这是一个错误还是我错过了什么?
答案 0 :(得分:0)
以这种方式渲染控制器时,您绕过了路由器,因此也绕过了与路由相关的证券。
您可以做的最好的事情是使用@Security注释将控制器限制为登录用户:
/**
* @Security("has_role('IS_AUTHENTICATED_REMEMBERED')")
*/
答案 1 :(得分:0)
通过使用twig中的“render”,您将跳过与路由相关的安全检查,如果您不需要在匿名上下文中获取内容,则可以在呈现控制器之前检查Twig中的角色,例如:
{% if is_granted('ROLE_USER') %}
{{ render(path('secured_route')) }}
{% endif %}