Новое в Symfony 2.5: Генерация корректного Denied HTTP Exception

Знаете ли вы разницу между Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException и Symfony\Component\Security\Core\Exception\AccessDeniedException?

Их имена очень похожи, и оба имеют дело с ресурсами, к которым пользователь не имеет доступа. Но какой из них вы должны использовать в контроллере? Это может показаться нелогичным, но вы должны использовать Symfony\Component\Security\Core\Exception\AccessDeniedException. При использовании IDE, вы можете импортировать неправильный исключение довольно легко. Это очень частая ошибка.

Что касается версии 2.5, теперь вы можете рассчитывать на вспомогательный метод, который сделает за вас все правильно (если вы используете Symfony\Bundle\FrameworkBundle\Controller\Controller  класс):

throw $this->createAccessDeniedException('You cannot access this page!');

Кстати, Symfony\Component\Security\Core\Exception\AccessDeniedException является классом исключения, который Вы захотите использовать, потому что он автоматически отлавливается  в Symfony Security Firewall, и позволяет генерировать правильный ответ пользователю.

Добавить комментарий

Ваш адрес email не будет опубликован.

20 − 16 =