Nac*_*sek 3 ajax antiforgerytoken razor asp.net-mvc-3
当我们在同一个cshtml页面上有多个可能的表单发布到控制器时,防伪验证不起作用.我们浏览了MVC3代码,发现问题出现在这部分代码中:
if (!String.Equals(cookieToken.Value, formToken.Value, StringComparison.Ordinal)) {
// error: form token does not match cookie token
throw CreateValidationException();
}
Run Code Online (Sandbox Code Playgroud)
我们拥有的cshtml是这样的:
@using (@Ajax.BeginForm()) {
@Html.AntiForgeryToken()
<input type="submit" class="buttonBlue" value="form1" />
}
@using (@Ajax.BeginForm()) {
@Html.AntiForgeryToken()
<input type="submit" class="buttonBlue" value="form2" />
}
Run Code Online (Sandbox Code Playgroud)
你能帮我解决这个问题吗?我们发现,在移除其中一个防伪标记之后,传送似乎按预期工作.
我们尝试为防伪设置机器密钥,但它也不起作用.
问候.
为了多次使用AntiForgeryToken,我执行以下操作.首先,在我的视图的顶部,我添加以下行:
ViewBag.__RequestVerificationToken = @Html.AntiForgeryToken().ToString();
Run Code Online (Sandbox Code Playgroud)
然后,在我需要令牌的每种形式中,我添加以下内容:
@Html.Raw(ViewBag.__RequestVerificationToken)
Run Code Online (Sandbox Code Playgroud)