認証リスナーで 403 ステータス コードの Response オブジェクトを返しています。
私が従った例はクックブックからのものです:
$response = new Response();
$response->setStatusCode(403);
$event->setResponse($response);
この応答が作成されると、ブラウザー (Chrome) に Web ブラウザーのエラー ページが表示されます。
Access to the web page was denied
You are not authorised to access the web page at http://project/access-denied. You may need to sign in.
私がやりたいことは、 (このクックブックのエントリapp/Resources/TwigBundle/views/Exception/error403.html.twig
で説明されているように) から独自のエラー小枝エラー ページを表示することです。しかし、403 応答が既に送信されているため、そこまで到達しません。
これは認証の失敗であり、致命的なエラーの原因となるセキュリティ トークンが存在しないことを意味するため、AccessDeniedException をスローできません。
AuthenticationException をスローすることはできますが、500 エラーが発生するだけで、標準の 500 エラー ページが表示されます。
これを行う唯一の方法は、twig サービスをリスナーに渡し、それを応答に追加すること$response->setContent($twigRenderedError);
です。