12

SensioLabsInsight を発見したばかりで、優れたコードの書き方に関する非常に興味深いヒントを見つけました。exitやのような基本的なものであっても、何かを使用する必要がある理由 (または使用しない理由) についての説明があれば、それは素晴らしいことですdie。一緒に働いている人に物事を説明するのに役立ちます。

したがって、私の質問は特に AccessDeniedHttpException に関するものです-それは言います:

Symfony アプリケーションは AccessDeniedHttpException をスローすべきではありません

では、アプリケーション コントローラまたは EventListener から 403 Forbidden を返すにはどうすればよいでしょうか。
ベストプラクティスは何ですか?

正直、そうなるだろうと思っていた

throw new AccessDeniedHttpException()

404の場合は

throw $this->createNotFoundException()

しかし、私は間違っていたようです。

4

4 に答える 4

4

この文は、Symfony のアーキテクチャ全体を念頭に置いて検討する必要があります。

Symfony フレームワークには、2 段階の認証 + 承認プロセスを適用するセキュリティ専用のサブシステム全体があります。つまり、Symfony のアーキテクチャではControllersは、基本的にフレームワークが開発を任せるものであり、「アプリケーション」であり、認証と承認が渡された場合にのみ呼び出されます。

したがって、その文は、セキュリティ コンポーネントの作業であるため、その例外をスローする必要はないことを示しています。それを行うことは禁止されておらず、不可能にさえされていませんが、フレームワークが通常考えられている方法ではありません。

これは、次の 2 つの状況で発生する可能性があります。

  1. あなたのアプリケーションは特殊であり、そのようにする必要があります
  2. フレームワークの方法からセキュリティ作業を行っています。フレームワーク機能を使用しないことのコスト/メリットを評価し、独自の機能を作成するだけです。
于 2013-08-30T20:11:58.723 に答える
0

ここhttp://symfony.com/doc/current/cookbook/security/custom_authentication_provider.htmlを見ると、403 レスポンス (?) を返す AuthenticationException をスローできるようです。

于 2013-07-23T09:31:12.430 に答える