2017-01-12 9 views
1

グローバルAuthorizeアトリビュートをFilterConfig.csに登録すると、認証されたユーザだけが各アクションメソッドにアクセスできるようになり、一部のコントローラを[Authorize(Role="Admin")]に修飾して管理者だけがアクセスできるようになります。これらのコントローラーで2回?それを防ぐために私は何ができますか?ASP.NET MVC承認フィルタ

+0

あなたがここにあなたがアクションまたはのコントローラに飾ら取得すべき属性を定義することができます。..重複フィルタを回避するために、条件付きフィルタを使用することができますが表示された場合はインデックスアクション

[Authorize] public class HomeController : Controller { [ExcludeFilter(typeof(AuthorizeAttribute))] // Excluding Authorize Important ! public ActionResult Index() { return View(); } public ActionResult Admin() // will follow the declared authorize Attribute { return View(); } } 

に集中あなたの選択。 http://haacked.com/archive/2011/04/25/conditional-filters.aspx/ –

答えて

1

ASP.NET MVC "FilterProvider"プロバイダを使用できます。これが行うことは、特定のコントローラとアクションから関連するすべてのフィルタを取得するのに役立ちます。

独自のプロバイダを定義し、デフォルトプロバイダの代わりにそのプロバイダを登録することができます。これはasp.netフィルタを完全に制御し、必要に応じていくつかのフィルタを削除することができます。

次のコントローラがあるとします。

[Authorize] 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult Whatever() 
    { 
     return View(); 
    } 

} 

私はあなたが次のように何かをする方法を探していると思います。あなたが探しているものthatsのが、このArticle

関連する問題