Twig 在404错误页面显示期间,Symfony2被授予(“完全验证”),导致ResourceNotFoundException

Twig 在404错误页面显示期间,Symfony2被授予(“完全验证”),导致ResourceNotFoundException,twig,symfony-2.1,Twig,Symfony 2.1,我已设置自定义错误页以显示文件夹中的某些HTTP错误: app/Resources/TwigBundle/views/Exception/ 403页面(error403.html.twig)按预期工作和显示 500页(error500.html.twig)按预期工作和显示 404页面(error404.html.twig)抛出500服务器错误: PHP致命错误:未捕获异常“Symfony\Component\Routing\exception\ResourceNotFoundException

我已设置自定义错误页以显示文件夹中的某些HTTP错误:

app/Resources/TwigBundle/views/Exception/
403页面(
error403.html.twig
)按预期工作和显示

500页(
error500.html.twig
)按预期工作和显示

404页面(
error404.html.twig
)抛出500服务器错误:

PHP致命错误:未捕获异常“Symfony\Component\Routing\exception\ResourceNotFoundException”

执行身份验证检查以显示已验证或未验证用户的某些菜单项时引发错误:

{% if is_granted('IS_AUTHENTICATED_FULLY') %}
如果我删除该复选框并只允许显示所有菜单项,页面将按预期加载错误页面。同样,403页面按其应有的方式显示,并毫无问题地利用了身份验证检查


我被困在这件事上了。除了文件名外,页面完全相同

从2.1开始,您不能在404页面中使用
被授予的

升级文件中提到了它

防火墙侦听器现在在路由器侦听器之后注册。这意味着特定的防火墙URL(如/login\u check和/logout)现在必须在路由配置中定义正确的路由。此外,如果您有一个自定义的404错误页面,请确保您没有在其上使用任何与安全相关的功能,例如
已被授予

见: 如果symfony<2.8:

{% if app.user is not null and is_granted('ROLE_ADMIN') %}
见:

从2015年12月17日开始编辑:

自2.8以来,不再需要此功能

{% if is_granted('ROLE_ADMIN') %}
现在一切正常


来源:

我建议检查
app.security.token
更加严格,即使用户是匿名的,也要评估为
true

如果您检查
app.user
,它将在异常模板中计算
false
,但即使防火墙存在(=常规模板),但用户未登录。例如,这将阻止显示登录按钮


请参阅:

您使用的是哪一版本的Symfony?最新和最好的。2.1-dev我相信我认为最好(因为-dev版本)在github上创建一个问题,symfony的家伙在那里真的很有帮助:)添加到github:是的,他们在github上收到多个问题帖子后将其添加到文档中。。。我仍然不太喜欢如何处理这件事。。因此,不要再犯错误,但可能不是你想要的行为。