【发布时间】:2020-12-22 03:05:36
【问题描述】:
我在 mvc4 中创建了一个登录表单和一些其他控制器。我将 [ValidateAntiForgeryToken] 放在控制器上,并将 @Html.AntiForgeryToken() 放在每个视图中。但是登录后当页面被重定向到另一个页面时,它会给出一个错误
所需的防伪表单字段“__RequestVerificationToken”不存在。”
我的示例控制器是
[HttpPost, ActionName("UserLogin")]
[ValidateAntiForgeryToken]
[AllowAnonymous]
public ActionResult UserLogin(FormCollection collection)
{
string username = collection["txtUser"].ToString();
string password = collection["pwd"].ToString();
string Browser = HttpContext.Request.Browser.Browser;
if (db.Users.Any(u => u.Email == username && u.Password == password))
{
User usr = db.Users.Single(u => u.Email == username && u.Password == password);
return RedirectToAction("Details","User",usr.Id);
}
return HttpNotFound();
}
视图是
@using(Html.BeginForm("UserLogin","User")){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
/// .......form elements....//
}
【问题讨论】:
-
在您的表单中查看。尝试添加此
@using(Html.BeginForm("UserLogin","User", FormMethod.Post))以确保它重定向到您的控制器的发布操作
标签: c# asp.net-mvc asp.net-mvc-4 antiforgerytoken