我想知道我应该如何解决以下错误/问题。我有一个表单正在提交,并在该表单上我使用AntiForgery令牌。表单的目的是登录该站点。
在视图中我有:
<%: Html.AntiForgeryToken()%>
控制器显示:
[HttpPost]
[HandleError(ExceptionType = typeof(HttpAntiForgeryException),Master = "MasterLogin", View = "Login")]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginPresentation model, string returnUrl)
{
//do stuff
}
它在大多数情况下都非常有效。期待以下情况。
当我尝试登录时,出现以下错误: 所需的防伪cookie&#34; __ RequestVerificationToken_L1NTSS5NZW1iZXJzaGlwLlBvcnRhbA2&#34;不存在。
我应该如何解决这个问题?
答案 0 :(得分:0)
只需确保针对使用ValidateAntiForgeryToken
属性修饰的操作发送的每个请求都是通过HTTP POST进行的,并且它来自具有包含所需令牌的隐藏输入的表单。
它可以使用Html.AntiForgeryToken()
生成,它看起来像这样:
<input name="__RequestVerificationToken" type="hidden" value="some value" />
与表单关联的令牌也会在客户端计算机上存储为Cookie,因此当您提交表单时, ValidateAntiForgeryToken 过滤器会检查以下内容:
了解更多here。