如何在ASP.NET MVC中捕获HttpAntiForgeryException

时间:2009-07-20 15:55:24

标签: asp.net-mvc

我在ASP.NET MVC表单中使用AntiForgeryToken。如果我在浏览器中停用cookie并发送来自,我会收到以下错误消息:

未提供所需的防伪令牌或无效。

如何阻止此消息显示?我更希望将用户重定向到另一个页面。

我已经激活了customErrors并在我的控制器中包含了这个HandleError:

[HandleError(ExceptionType=typeof(HttpAntiForgeryException), View="Index")]
public class MyController : Controller
{
...
}

忽略HandleError。

有没有人有解决方案?

2 个答案:

答案 0 :(得分:1)

它适用于我:)

我注意到您已将错误视图指定为“索引” - 此视图中是否有错误仅出现在此错误情况中? HandleErrorAttribute将显示此“索引”视图而不执行操作本身 - 如果您的索引操作方法是在ViewData中设置View依赖于工作的对象,那么错误将无法正确处理,您将获得丑陋的yelllow页。

如果这不能解决问题,您是否测试了其他错误的错误处理以使其有效?一些可能导致错误无法处理的事情:

  1. 您的web.config
  2. 中未启用自定义错误
  3. 您视图中的错误
  4. 视图使用的母版页中的错误。

答案 1 :(得分:0)

我认为反伪造令牌的目的是阻止另一个网站代表经过身份验证的用户提出的请求。因此,如果您可以合法地访问没有cookie的表单,这意味着您可以在不经过身份验证的情况下访问它,因此不需要保护它免受CSRF攻击。

如果我错了,我希望有人纠正我。