重定向到调用HttpAntiForgeryException (ValidateAntiForgeryToken)的控制
本文关键字:控制 ValidateAntiForgeryToken 调用 HttpAntiForgeryException 重定向 | 更新日期: 2023-09-27 18:12:33
当HttpAntiForgeryException被抛出时,在提交我的任何表单时,我想通过加载表单视图的原始控制器和Action将用户重定向到表单的干净版本(使用新令牌),并显示错误消息。
我相信这将创造一个良好的用户体验,但我不确定这是否可能,或者是否会有任何安全问题。
此刻,我正在寻找使用override void OnException(ExceptionContext filterContext)
在我的BaseController,但我不能弄清楚如何,或者如果我可以,得到触发异常的动作和控制器。该操作将是httppost版本,但将具有与加载表单视图的原始操作相同的名称。
是否有一种方法可以从filterContext.Exception中的堆栈跟踪中获得它?
还是有更好的方法?
或者这是一个愚蠢的想法?非常感谢你的建议:)
我相信下面将按照您描述的方式处理异常:
protected override void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception is HttpAntiForgeryException)
{
this.RedirectToAction(
filterContext.RouteData.Values["action"].ToString(),
filterContext.RouteData.Values);
filterContext.ExceptionHandled = true;
}
base.OnException(filterContext);
}
另一种选择是使用HandleError属性,但这只允许重定向到给定视图(通常是自定义错误视图)。最后,可以通过实现IExceptionFilter接口来创建自定义HandleError属性。