私は、システム内で特定の役割またはユーザーに許可されていることをカスタマイズできる、柔軟で適度にきめ細かいセキュリティ システムに対する広範な要件を持っています。
この要件に直面して、セキュリティがビルディング ブロックとして使用するアーキテクチャ内のオブジェクト、クラス、またはアイテムを選択する必要があります。ロールが X へのアクセスを許可した場合、X とは何ですか? エンティティ、コントローラー アクション、オブジェクトのカスタム リスト内の項目など。
私が検討しているオプション:
1) エンティティに対する CRUD アクションによる付与 (たとえば、アカウント エンティティへの作成/読み取り/更新アクセス権、請求書エンティティへの読み取りアクセス権などをユーザーに付与できます)
2) エンティティに対する CRUD アクションによる付与、個々のエンティティ プロパティに対する RU アクション (たとえば、特定のフィールドを更新するためのアクセス) - エンティティの属性によって識別される「プロパティ グループ」を使用して簡略化できます。
3) リポジトリ & リポジトリ機能による付与 (例: AccountsRepository.Get(...) または AccountsRepository.GetList(...) の呼び出しを許可)
4) MVC コントローラーによる付与 + アクション (例: /Accounts/Index または /Accounts/Update/X などへのアクセスを許可)
5) アーキテクチャ内の任意のものに関連付けることができる「セキュリティ オブジェクト」のカスタム リストによる付与
オプション (5) は柔軟性が最も高くなりますが、実装の汎用性は低くなります。オプション (4) は、セキュリティ項目がユーザー インターフェイスを厳密に反映するため魅力的ですが、ドメインがアクセスを保護しておらず、セキュリティが Web 以外のインターフェイスに適用されないことを意味します。
MVC + DDD + リポジトリ パターンでセキュリティ パターンを設計したあなたの意見と経験は何ですか?