3

私たちのアプリケーションには の概念がありPermissionAttributeます。この属性はアプリケーションのベース レイヤーで定義され、コマンドとクエリはその属性で装飾されます。FilterAttributeこの属性は基本レイヤーで定義されているため、継承したり実装したりすることはできません (したくありません) System.Web.Mvc.IActionFilter

それでも、次のように、この属性をコントローラー アクションに適用したいと考えています。

[Permission(Permissions.Administration.ManageUsers)]
public ActionResult Index()
{
    return this.View();
}

この属性に基づいて、適切なセキュリティ チェックを適用する必要があります。このカスタム属性に基づいてこれらのセキュリティ チェックを追加できるように、MVC の動作をカスタマイズするための適切なフックを見つけるために、MVC コード ベースを参照してきました。の存在に基づいて作成されるメソッドからカスタムControllerActionInvokerを返すカスタムを作成することについて考えましたが、それは多くの作業のように感じられ、これが正しい道であるかどうかはわかりません.ReflectedControllerDescriptorGetControllerDescriptorFilterAttributePermissionAttribute

この非 MVC 関連の属性を処理できるように、MVC パイプラインをカスタマイズする効率的で快適な方法は何でしょうか?

4

2 に答える 2