2009-11-07 26 views
9

Implementé AnitforgeryToken con mis formularios asp.net MVC, y también agregué el atributo a mi procedimiento de inicio de sesión, sin embargo, cuando el cheque falla, deseo redireccionar a mi acción de fraude en lugar de a un página de excepción. ¿Es esto posible dentro del atributo ???asp.net MVC antiforgerytoken en la excepción RedirectToAction

gracias

Respuesta

14

En caso de que no quieren poner [HandleError] atributo en todas las acciones que tienen [ValidateAntiForgeryToken], es posible añadir un filtro personalizado a sus filtros globales:

en Global.asax bajo Application_Start():

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 

y luego:

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

comenta por qué bajas tu voto. – Dmitry

Cuestiones relacionadas