抛出新的AccessDeniedException

时间:2015-07-23 13:11:24

标签: symfony

我正在努力实现基于ROLE的管理应用程序。我有一个自定义选民,在某些时候我做的事情是:

if($role && VoterInterface::ACCESS_GRANTED !== $voteResult) {
    throw new AccessDeniedException('Unauthorized access!');
}

,结果是呈现了自定义的error403.html.twig模板。 到现在为止还挺好。

error403模板扩展了主模板,在某些时候我使用app.request.get('_route')构建一个菜单来生成链接。

问题是app.request.get('_route')null

x调试此问题我注意到$request->attributes->parameters数组不会包含_route_route_params个键。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

问题是Symfony使用子请求来呈现错误页面。它不需要路由器,并且您没有像主请求中那样完全相同的请求对象。

Github问题

https://github.com/symfony/symfony/issues/5804

关于SO的同样问题

app.request.attributes.get('_route') is empty when I override 404 error page

一些理论

https://knpuniversity.com/screencast/symfony-journey/sub-request-internals

您可以编写自己的异常侦听器并以某种方式修改此行为。