Знаете ли вы разницу между 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, и позволяет генерировать правильный ответ пользователю.