我有安装自定义错误页,显示该文件夹中的某些HTTP错误:
app/Resources/TwigBundle/views/Exception/
403页( error403.html.twig
如预期)的作品和显示器。
500页( error500.html.twig
如预期)的作品和显示器。
404页( error404.html.twig
)抛出一个500服务器错误:
PHP致命错误:未捕获的异常 '的Symfony \分量\路由\异常\ ResourceNotFoundException'
该错误被抛出做一个auth检查,并针对有或者没有身份验证的用户显示某些菜单项:
{% if is_granted('IS_AUTHENTICATED_FULLY') %}
如果我删除检查,只是让所有菜单项显示,该页面加载如预期的错误页面。 同样,403个显示,因为它应该和利用AUTH检查没有问题。
我坚持这一点。 该网页是完全一样的,除了文件名。
你不能使用is_granted
了404页,因为2.1:
它的升级文件中提到的
防火墙监听者现在是路由器监听后注册。 这意味着,特定防火墙的网址(例如/ login_check和/注销)现在必须在你的路由配置中定义的正确路线。 另外,如果你有一个自定义404错误页面,请确保您不使用任何安全相关的功能,如is_granted
就可以了。
请参阅: https://github.com/symfony/symfony/blob/master/UPGRADE-2.1.md#security
如果symfony的<2.8:
{% if app.user is not null and is_granted('ROLE_ADMIN') %}
请参阅: https://github.com/symfony/symfony-docs/issues/2078
从12月17日'15编辑:
这不再是必要的,因为2.8,
{% if is_granted('ROLE_ADMIN') %}
现在工作得很好。
来源: http://symfony.com/blog/new-in-symfony-2-8-dx-improvements#allow-to-check-for-security-even-in-pages-not-covered-by-firewalls
我建议检查app.security.token
更加严格和评价true
,即使用户是匿名的。
如果您检查app.user
将评估false
的异常处理模板,但即使在防火墙的存在 (=常规模板),但用户没有登录。 这将防止 - 例如 - 登录按钮的显示。
请参阅: https://github.com/symfony/symfony-docs/pull/2359
文章来源: Symfony2 is_granted('IS_AUTHENTICATED_FULLY') during 404 error page display, causing ResourceNotFoundException