当我们有不止一种可能的表单可以发布到同一 cshtml 页面上的控制器时,
防伪验证不起作用。我们检查了MVC3代码,发现问题出在这部分代码中:
if (!String.Equals(cookieToken.Value, formToken.Value, StringComparison.Ordinal)) {
// error: form token does not match cookie token
throw CreateValidationException();
}
我们的 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" />
}
你能帮我解决这个问题吗?我们发现,在删除其中一个防伪标记后,一切似乎都按预期工作。
我们尝试设置防伪机器密钥,但也不起作用。
Regards.
为了多次使用 AntiForgeryToken,我执行以下操作。首先,在我的视图顶部,我添加以下行:
ViewBag.__RequestVerificationToken = @Html.AntiForgeryToken().ToString();
然后,在需要令牌的每个表单中,我添加以下内容:
@Html.Raw(ViewBag.__RequestVerificationToken)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)