2009-11-07 12 views
9

私はasp.net MVCフォームでAnitforgeryTokenを実装し、ログインプロシージャにその属性を追加しましたが、チェックが失敗したときに私の詐欺行為にリダイレクトしたいのです。例外ページ。これは属性????の内で可能ですか?asp.net MVC antiforgerytoken例外on RedirectToAction

おかげ

答えて

10

ValidateAntiForgeryTokenAttributeだけHttpAntiForgeryExceptionをスローします。あなたは、このシナリオを処理するためにHandleErrorAttributeを使用することができます。

[HandleError(
    ExceptionType = typeof(HttpAntiForgeryException), 
    View = "Unauthorized")] 
[ValidateAntiForgeryToken] 
[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult SomeActionThatRequiresToken() 
{ 
    return View(); 
} 
+0

ありがとうは私が探していたもののthats。 – davethecoder

14

あなたがあなたのグローバルフィルタにカスタムフィルタを追加することができ、[ValidateAntiForgeryToken]を持っているすべてのアクションに[HandleError]属性を入れたくない場合:

Global.asaxのApplication_Start()下:

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 

、その後:

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 
     filters.Add(new AntiForgeryTokenFilter()); 
    } 
} 

AntiForgeryTokenFilter.cs:

public class AntiForgeryTokenFilter : FilterAttribute, IExceptionFilter 
{ 
    public void OnException(ExceptionContext filterContext) 
    { 
     if(filterContext.Exception.GetType() == typeof(HttpAntiForgeryException)) 
     { 
      filterContext.Result = new RedirectResult("/"); // whatever the url that you want to redirect to 
      filterContext.ExceptionHandled = true; 
     } 
    } 
} 
+0

コメントなぜあなたは投票しません。 – Dmitry

関連する問題