我在登录表单中收到此错误:
所需的防伪表格字段“__RequestVerificationToken”不存在
我使用的是使用visual studio 2015模板生成的ASP.NET MVC的默认项目。
Login.cshtml:
@using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
@Html.AntiForgeryToken()
...
}
的AccountController:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
...
}
web.config中的机器密钥定义:
<machineKey validationKey="6237432C07086CE1A8FAAD3CC71A3AC1DE0B22DE9061D7CAF798E5B18E6E888D7A3F88004D0A928952CB81598ED565B26F8175E30294B1F5A1F3220229163F1C"
decryptionKey="E61A22E8DEE09CB4640B2863705CE6BC95E64C8797CAB8CAE7463BE7F9AB1B94"
validation="SHA1"
decryption="AES" />
生成的HTML页面:
<form action="/Account/Login" class="form-horizontal" method="post" role="form">
<input name="__RequestVerificationToken" type="hidden" value="Ei4E03S5nvvdR9N2KJg8aGDQK9fI3xbBJLJzT3z3c7QAyyxbGf11ncmTAiD-8itHoKWYuNNghOsmyTS2hBDlmkv7Ttk1" />
我的浏览器中有一个名为__RequestVerificationToken
且值qM5XwYIQiiHk2lumHWcXHOPPji2VptN95X0FDLneyXSN3_sGrF6fe7zt8KHC5MjopQoBh9sJl5vEJLGOAzy1h-8R-nk1
的Cookie会在会话结束时到期:When the browsing session ends
。
IIS Express
在本地发生此错误,但在将项目部署到服务器后,发生了此错误。
清除Cookie并重新启动浏览器无法解决问题。
有什么想法吗?
编辑:
我从控制器和视图中删除了防伪令牌并发现了一些奇怪的事情:表单提交数据没有任何问题,但在提交和验证之间,所有字段都变为空或空。验证前__RequestVerificationToken
变为空,这会导致问题。现在我正在调查这个新问题:(
答案 0 :(得分:1)
在您的Web.config中找到<httpCookies requireSSL="true" />
属性并将其注释掉,或者将项目设置为始终使用SSL。