1

我有一个MVC 4 Web 应用程序,ELMAH在后台运行,以帮助我跟踪网站上发生的任何错误。我注意到发生了一些错误,说明以下内容

System.Web.Mvc.HttpAntiForgeryException:所需的防伪表单字段“__RequestVerificationToken”不存在。

大多数这些错误似乎发生在用户尝试登录我的网站时。老实说,我只是为此使用了开箱即用的MVC 4 Visual Studio 登录视图,即我的视图有以下内容

@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

//textboxes for username and password 
//login button

}

然后是我的带有登录操作的帐户控制器

 [HttpPost]
 [AllowAnonymous]
 [ValidateAntiForgeryToken]
 public ActionResult Login(LoginModel model, string returnUrl)
 {
      if (ModelState.IsValid && _accountService.Logon(model.Email, model.Password,false))
      {

      }

 }

你认为这段代码有什么问题吗?我不知道如何摆脱这些错误。

任何反馈或建议将不胜感激。

谢谢。

4

1 回答 1

0

我有一个用户报告了同样的问题,我们发现当他们点击登录按钮两次时就会发生这种情况。

我认为问题是登录会更改令牌,但是当重新提交表单时,它具有旧令牌。一种解决方案是禁用登录按钮,以便用户只能提交一次表单。

但这并不完美,因为登录可能会超时或其他原因,如果不重新加载页面,他们将无法重试,所以我目前正在寻找更好的解决方案。

于 2016-02-03T15:00:10.010 回答