2009-11-07 44 views
9

benim asp.net MVC formları ile AnitforgeryToken implimented olan istisna RedirectToAction üzerinde antiforgerytoken ve ayrıca onay failes i bir yerine benim dolandırıcılık eylemi yönlendirmek isteyen ancak, benim giriş prosedürüne niteliği eklendi istisna sayfası. öznitelik içinde bu mümkün mü ????asp.net MVC

sayesinde

cevap

10

ValidateAntiForgeryTokenAttribute sadece HttpAntiForgeryException atar. Bu senaryoyu ele HandleErrorAttribute kullanabilirsiniz: [ValidateAntiForgeryToken] olan tüm eylemler

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

teşekkür i aradığı şeyi bu. – davethecoder

14

sen koymak istemiyorum [HandleError] özelliğini, kendi Küresel filtreler için özel bir filtre ekleyebilir:

Application_Start() altında Global.asax: o zaman

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 

ve:

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

yorum neden aşağı oy. – Dmitry