ActionFilter はおそらく良い出発点ですが、アーキテクチャによっては、境界防御が十分かどうかを検討する必要がある場合があります。
基本的に単一層の ASP.NET MVC アプリケーションを構築している場合 (そして、これを行う完全に合理的な理由がある場合もあります)、ActionFilter は十分に優れた防御を提供すると同時に、非常に簡単に適用できます。
一方、アプリケーションが多層アプリケーションの場合は、多層防御がより適切です。その場合、承認ロジックをドメイン モデルまたはデータ アクセス レイヤーに適用することを検討する必要があります。これにより、同じドメイン モデル (Web サービスなど) に基づいて別のアプリケーションを開発した場合でも、承認ロジックが引き続き適用されることが保証されます。
何をするにしても、実際の承認の実装は IPrincipal に基づいていることを強くお勧めします。
より具体的には、ここで質問していることは、ACL ベースの承認でモデル化するのが最適です。各ユーザー プロファイルに ACL を設定し、デフォルトでは、ユーザー自身と管理者のみにアクセスを許可します。後で他のユーザーのプロファイルへの委任アクセスを許可するためにアプリケーションを拡張する必要がある場合 (特定のケースではリモートで現実的であるかどうかはわかりません)、ACL に新しいエントリを追加するだけでそれを行うことができます。
このような場合、アクセスの評価には、要求されたリソースの ACL を取得し、現在のユーザー (IPrincipal) がその ACL に含まれているかどうかを確認することが含まれます。このような操作は、プロセス外の操作 (データベースで ACL を検索する) を伴う可能性が非常に高いため、ActionFilter の背後に隠してアプリケーションの暗黙的な部分にすることは、パフォーマンスの問題を潜在的に隠す可能性があるように思えます。そのような場合、認可モデルをもう少し明示的/可視的にすることを検討します。