我正在检查请求URI中是否有特定的令牌,如果没有令牌或令牌错误,则抛出Symfony\Component\Security\Core\Exception\AccessDeniedException
。
if(!isset($token) && $token != 'whatever') {
throw new AccessDeniedException('No token given or token is wrong.');
}
但是当我使用这个AccessDeniedException
时,Symfony2只是简单地重定向到登录页面。相反,我希望有一个专用的403错误页面(我已经创建了app/Resources/TwigBundle/views/Exceptions/error403.html.twig
文件)。
为了实现这一点,我必须做出哪些改变?我必须使用PHP本机异常吗?但是我怎么知道要传递一个403错误代码呢?
Symfony2是否可能有一个特定的403异常,而不是简单地重定向到登录?
发布于 2014-02-21 15:52:05
抛出Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException
。
这将绕过安全系统,并向您提供403响应,该响应将被twig异常侦听器拾取。
发布于 2016-02-11 15:04:53
从Symfony 2.6开始,您可以使用以下控制器快捷方式来触发良好的异常:
return $this->denyAccessUnlessGranted('ROLE_EDIT', $item, 'You cannot edit this item.');
https://stackoverflow.com/questions/21932229
复制相似问题