1

認証リスナーで 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);です。

4

0 に答える 0