繁体   English   中英

asp.net MVC antiforgerytoken异常RedirectToAction

[英]asp.net MVC antiforgerytoken on exception RedirectToAction

我用我的asp.net MVC表单对AnitforgeryToken表示赞同,并且还将该属性添加到我的登录过程中,但是当检查失败时我希望重定向到我的欺诈行为而不是异常页面。 这可能属于属性????

谢谢

如果您不想在[ValidateAntiForgeryToken]所有操作上放置[HandleError]属性,您可以向全局过滤器添加自定义过滤器:

Application_Start()下的Global.asax中

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;
        }
    }
}

ValidateAntiForgeryTokenAttribute只会抛出HttpAntiForgeryException 您可以使用HandleErrorAttribute来处理此场景:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM