私のコントローラメソッドで@PreAuthorizeで春のセキュリティを使用しています。私の推論では、認可チェックが1つの層で予測可能に、そして要求の中で可能な限り早く起こることを望んでいたということでした。しかし、私は春のセキュリティ3のドキュメントを読んで、サービスレベルでメソッドレベルのセキュリティを適用することを推奨しているのを見ました(しかし、なぜかは言いません)。コントローラレイヤまたはサービスレイヤでセキュリティメソッドレベルのアノテーションを適用する必要がありますか?
私の質問は、セキュリティメソッドレベルの注釈をコントローラレイヤーまたはサービスレイヤーに適用する必要がありますか? (または「両方」、または「それは依存していますか?」)さらに重要なのは、なぜですか?
ありがとうございました。サービスにセキュリティを置くための良い議論がありました。あなたはコントローラーを確保するための良い議論と考えていますか?またコンテキストについては、私の念頭に置いているアプリは、基本的にコントローラのエンドポイントごとのサービスメソッドを持っています。私のサービスはトランザクション境界を定義しているからです。したがって、同じサービスメソッドは1つの場所から呼び出され、そのサービスを使用する他のクライアントは存在しません。 – Jay
私がサービスに権限を与えることを考えたもう一つの理由は、どのサービスにアクセスできるかという質問はビジネス上の決定であり、ビジネスロジックと位置づけることができるということです。 – Jay
私の頭の上から離れて、私はサービス層に優先してコントローラを確保するための良い引数を持っていません。これは、特定のケースでは存在しない可能性があるわけではありません。要求には、通常、要求ヘッダーなどのWeb層でのみ利用可能なデータに基づいてルールを指定する場合があります。 –