web-dev-qa-db-ja.com

アクセス拒否結果の処理

Drupal 8)では、拒否されたアクセスをユーザーに返す正しい方法は何ですか(コントローラーのアクセス要件以外)?

ほとんどの場合AccessDeniedHttpExceptionをスローすることだと思いますが、モジュールが403にイベント応答を設定したり、system.403にリダイレクト応答を行ったりするのを見てきました。

1
Kevin

通常、正しい方法は、403またはリダイレクト応答をthrow new AccessDeniedHttpException()に設定して例外処理をバイパスすることです。これにより、contribまたはカスタムコードで403の別の処理を構成することができなくなります。これを意図的にバイパスしたい場合、たとえばより高速な403を生成したい場合は除きます。

ただし、ほとんどの場合、ルート要件としてアクセスを制御することをお勧めします。主な効果は同じで、ルーティングシステムも例外をスローします。ただし、メニューリンクの可視性を制御するなど、カスタムコードで例外をスローしたときに取得できないその他のことも行います。

3
4k4