C#ドメイン駆動設計プロジェクトに役割とセキュリティをどのように実装しますか?呼び出し元のアプリケーション(ASP.NET MVC)で実装するのか、ドメインモデル自体(モデルエンティティとサービス)で実装するのかについては、議論の余地があります。認証がすでに存在するWebサイト自体にあるべきであると主張する人もいます。ただし、これは、コアビジネスシステムと統合するたびにセキュリティを再実装する必要があることを意味します。
例:管理者は、レコードの編集や削除など、システム内のほとんどすべてのアクションを実行できる必要があります(つまり、ユーザーの注文を削除できます)。一方、ユーザーは自分のレコードのみを編集および削除できる必要があります(つまり、ショッピングカートからアイテムを追加/削除できます)。
ちなみに、DDDとセキュリティに関する7つの異なるシナリオをカバーするトピックに関する素晴らしい論文があります。
- 第4章セキュリティサービスの設計シナリオ
- 4.1シナリオ1:通常のサービスとしてのセキュリティサービス
- 4.2シナリオ2:UIに組み込まれたセキュリティ
- 4.3シナリオ3:ドメインモデルをカプセル化するセキュリティサービス
- 4.4シナリオ4:UIのゲートウェイとしてのセキュリティサービス
- 4.5シナリオ5:UIのアダプターとしてのセキュリティサービス
- 4.6シナリオ6:AOPとアダプターが統合されたセキュリティサービス
- 4.7シナリオ7:AOPと統合されたセキュリティサービス
私は個人的にPostSharpを使用してAOPに傾倒しますが、これまであまり多くのことをしていなかったため、飛躍することを躊躇しています。