通常、サーバー側のコントローラーに承認の決定を下します。これらは最近RESTfulエンドポイントになりましたが、MVCタイプのアーキテクチャも同じものだと思います。議論のために、それは役割ベースの承認であると仮定します。保護されたメソッドには注釈が付けられるか、チェックが行われ、必要に応じて403が返されます。
さて、承認が実際にはビジネスルールであることを考えると、たとえば「管理者だけがXをリストできる」ということを考えると、私は彼らがレイヤーを押し下げられるべきだと考えています。コントローラーがビジネスレイヤーに操作の実行を要求すると、サービスまたはビジネスレイヤーは、コントローラーに許可されていないことを通知します。
これは合理的なアプローチですか?これには欠点はありますか?
これを行うための静的な手続き型のコード化されたルールを本質的に保持するAuthorisationServiceがあるのは嫌ですが、すべてのアクセスロジックを1か所に保持することは理にかなっています。それは別々に保たれるべき横断的な関心事ですか?
だから私は誰かがこれをやったかどうか、彼らがそれをどのようにきれいに達成したか、または私が読むことができる良いリソースがあるかどうかを尋ねています。Java fwiwを使用していますが、これは言語に依存しない質問です。
ここで関連する質問を確認しましたが、それらは非常に薄いので、答えはありません。例:ドメインモデルでの検証と承認、およびサービスレイヤーを介したMVCへの実行
私は春のセキュリティ文書を読んでいますが、それは横断的な関心事であるといくつかの良い議論をしていますが、それは単なる「春の道」であり、より広い視野が欲しいと心配しています。また、アプリケーションを特定のフレームワークに結び付けます。