2011-08-18 3 views
9

Authorize属性を持つコントローラクラス内の1つのアクションで[Authorize]アトリビュートを無視する方法が1つありますか?AuthorizeAttributeをコントローラクラスに同時に適用する

 [Authorize] 
     public class MyController : Controller 
     { 
      [Authorize(Users="?")]//I tried to do that and with "*", but unsuccessfuly, 
      public ActionResult PublicMethod() 
      { 
      //some code 
      } 

      public ActionResult PrivateMethod() 
      { 
      //some code 
      } 
     } 

ジャストPrivateMethod()は認証が必要な必要がありますが、それはあまりにも要求されています。

PS:カスタムフィルタを作成したくありません。デフォルトでは

[]さん

+1

を使用することができますのクラスMyController上で承認を無視しようとしていますアクションPublicMethodまたはPrivateMethod? – itsmatt

+0

アクションPublicMethodを無視します。私は間違って何かを書いた、申し訳ありません、それは今修正されました! –

答えて

4

それは不可能です - あなたがコントローラの[承認]を設定している場合のみユーザーがアクションにアクセスできる認証されました。

または

カスタム決定を試すことができます:stackoverflow

3

ソリューションは、この記事にある:あなたがのAllowAnonymousカスタム属性を持つアクションを飾るホワイトリストのアプローチについてSecuring your ASP.NET MVC 3 Application

記事会談。 AuthorizeAttributeOnAuthorizationメソッドを拡張して、AllowAnonymous -actionsの権限チェックをスキップする必要があります。 (アプローチはレヴィ、MVCチームのセキュリティ専門家に入金されます。)

16

あなたは[のAllowAnonymous]

[Authorize] 
public class MyController : Controller 
{ 
    [AllowAnonymous] 
    public ActionResult PublicMethod() 
    { 
      //some code 
    } 

    public ActionResult PrivateMethod() 
    { 
      //some code 
    } 
    } 
0
public class MyController : Controller 
    { 
     [Authorize] //it will only work for the following action 
     public ActionResult PublicMethod() 
     { 
     //some code 
     } 

     public ActionResult PrivateMethod() //[Authorize] will not work for this action 
     { 
     //some code 
     } 
    } 
+0

答えを説明するためにいくつかの単語を追加してみてください。通常、コードの答えはあまり役に立ちません。 – Matt

関連する問題