2009-11-07 9 views

Odpowiedz

14

W przypadku, gdy nie chcesz, aby umieścić [HandleError] atrybut wszystkich działań, które mają [ValidateAntiForgeryToken], można dodać niestandardowy filtr do globalnych filtrów:

w Global.asax pod Application_Start():

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 

, a następnie:

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

skomentuj, dlaczego nie głosujesz. – Dmitry

Powiązane problemy