2016-04-13 13 views
0

クラスレベルでValidateAntiForgeryToken属性が適用されています。以下のコードに示すように。メソッドレベルで `ValidateAntiforgerToken`をオーバーライドする方法は?

[ValidateAntiForgeryToken, Authorize(Roles = "SuperUser")] 
public class ManageController : BaseController 
{ 
... 
} 

このクラスはPOSTデータとGET操作のために公開されるメソッドのカップルを受け入れるいくつかの方法があります。クラスレベルの属性を変更せずにGETメソッドValidateAntiForgeryTokenを無効にします。 POSTのメソッドをすべて変更し、ValidateAntiForgeryTokenを適用するだけで、これを行うことができます。しかし、私は彼らが簡単な方法であることを望んでいます。

Authorizeの属性と同様に、AllowAnonymousの属性はAuthorize属性をクラスレベルで適用できますが、AllowAnonymousを適用してメソッドレベルを変更できます。

[Authorize] 
public class AccountController : BaseController 
{ 
     [AllowAnonymous] 
     public ActionResult Login(string returnUrl) 
     {    
      return View(); 
     } 
} 
+0

このリンクをご覧くださいhttp://stackoverflow.com/questions/5213345/how-can-i-set-the-validateantiforgerytoken-globally、基本的にフィルタを作成し、クラスにフィルタを追加してからフィルタを追加することができます投稿のメソッドにValidateAntiForgeryTokenを追加します。 –

答えて

0

この投稿はあなたに役立つと思います。あなたがチェックが、それはいくつかのアクションを有効にスキップするカスタム属性を作成する方法について説明します記事の

public class AntiForgeryAttribute: IAuthorizationFilter 
{ 
    public void OnAuthorization(AuthorizationContext authorizationContext) 
    { 
     if (authorizationContext.RequestContext.HttpContext.Request.HttpMethod != "POST") 
      return; 

     new ValidateAntiForgeryTokenAttribute().OnAuthorization(authorizationContext); 
    } 
} 

以降にをGETスキップできIAuthorizationFilterカスタムを追加することにより http://prideparrot.com/blog/archive/2012/7/securing_all_forms_using_antiforgerytoken

+0

こんにちは、こんにちは、こんにちは、stackoverflowへようこそ。答えをもっと記述してください。あなたの答えにリンクがある場合、そのページが削除され、あなたの答えが将来の他の人々にとって役に立たなくなる可能性があります –

+0

私は記事を正しく守って間違いをしている可能性があります。 https://www.dropbox.com/s/h5sbaoysbb0ayt7/AntifForgerySkip.zip?dl=0でコードをアップロードしましたか?私はまた、基本クラスを使用してみました。 – ndd

関連する問題