Подтвердить что ты не робот

Как я могу удалить исключение 403 в Symfony2?

Я делаю проверку, если есть определенный токен в моем 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-исключение, которое не просто перенаправляется на вход в систему?

4b9b3361

Ответ 1

Throw Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException.

Это будет обходить систему безопасности и дать вам ответ 403, который, в свою очередь, будет подхвачен слушателем прослушивания ветки.

Ответ 2

В Symfony 2.6 вы можете использовать следующий ярлык контроллера, который вызовет для вас хорошее исключение:

return $this->denyAccessUnlessGranted('ROLE_EDIT', $item, 'You cannot edit this item.');