【发布时间】:2019-06-09 08:54:19
【问题描述】:
我正在尝试将 CSRF 令牌实施到我的代码中,但到目前为止没有运气。我想有三个步骤:
我要发送表单的代码:
@using (Html.BeginForm("Manage", "Account"))
{
@Html.AntiForgeryToken()
}
在我的控制器视图中我写了:
public class HomeController : Controller
{
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index()
{
return View("Table");
}
etc...
}
还有我的 ajax 调用:
$.ajax({
type: "POST",
url: "../Home/" + sFunction,
contentType: "application/json; charset=utf-8",
processData: false,
dataType: "json",
headers: { "__RequestVerificationToken":
$('input[name=__RequestVerificationToken]').val() },
data: data === null ? null : JSON.stringify(data),
等等
我错过了什么?为什么它不工作? 谢谢
【问题讨论】:
-
嗨乔,请点击以下链接stackoverflow.com/questions/4074199/…
-
谢谢,我已经检查了该链接以及其他链接。我没有设法解决我的问题
-
我认为您的 Ajax POST 调用是通过单击按钮显式启动的,请确认
-
不,Ajax 调用在页面加载时自动发生。它可以在没有防伪令牌的情况下工作。谢谢
-
@JoeJoeJoe '[ValidateAntiForgeryToken] ' 需要装饰您的表单发布方法。不是您的索引 GET 方法
标签: asp.net model-view-controller csrf antiforgerytoken