私たちのアプリケーションには の概念がありPermissionAttribute
ます。この属性はアプリケーションのベース レイヤーで定義され、コマンドとクエリはその属性で装飾されます。FilterAttribute
この属性は基本レイヤーで定義されているため、継承したり実装したりすることはできません (したくありません) System.Web.Mvc.IActionFilter
。
それでも、次のように、この属性をコントローラー アクションに適用したいと考えています。
[Permission(Permissions.Administration.ManageUsers)]
public ActionResult Index()
{
return this.View();
}
この属性に基づいて、適切なセキュリティ チェックを適用する必要があります。このカスタム属性に基づいてこれらのセキュリティ チェックを追加できるように、MVC の動作をカスタマイズするための適切なフックを見つけるために、MVC コード ベースを参照してきました。の存在に基づいて作成されるメソッドからカスタムControllerActionInvoker
を返すカスタムを作成することについて考えましたが、それは多くの作業のように感じられ、これが正しい道であるかどうかはわかりません.ReflectedControllerDescriptor
GetControllerDescriptor
FilterAttribute
PermissionAttribute
この非 MVC 関連の属性を処理できるように、MVC パイプラインをカスタマイズする効率的で快適な方法は何でしょうか?