Drupal 8)では、拒否されたアクセスをユーザーに返す正しい方法は何ですか(コントローラーのアクセス要件以外)?
ほとんどの場合AccessDeniedHttpException
をスローすることだと思いますが、モジュールが403
にイベント応答を設定したり、system.403
にリダイレクト応答を行ったりするのを見てきました。
通常、正しい方法は、403またはリダイレクト応答をthrow new AccessDeniedHttpException()
に設定して例外処理をバイパスすることです。これにより、contribまたはカスタムコードで403の別の処理を構成することができなくなります。これを意図的にバイパスしたい場合、たとえばより高速な403を生成したい場合は除きます。
ただし、ほとんどの場合、ルート要件としてアクセスを制御することをお勧めします。主な効果は同じで、ルーティングシステムも例外をスローします。ただし、メニューリンクの可視性を制御するなど、カスタムコードで例外をスローしたときに取得できないその他のことも行います。