未提供所需的防伪令牌或该令牌无效
@using (Html.BeginForm("Create", "Posts", FormMethod.Post, new { id = "publish" }))
{
@Html.AntiForgeryToken("Posts/Create")
<input type="text" id="url" name="url" />
<input type="submit" value="@Html.Resource("Publish")" />
}
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Create(string url)
{
// stuff that's never reached
}
我不明白是什么导致这个简单的表单无法验证 CSRF 令牌。 我该如何调试这个?
更新
如果我删除盐,它就会起作用;奇怪的是它曾经与盐一起使用,但我不明白为什么它不再起作用了。
@using (Html.BeginForm("Create", "Posts", FormMethod.Post, new { id = "publish" }))
{
@Html.AntiForgeryToken("Posts/Create")
<input type="text" id="url" name="url" />
<input type="submit" value="@Html.Resource("Publish")" />
}
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult Create(string url)
{
// stuff that's never reached
}
I can't realize what's making this simple form fail on validating the CSRF token.
How can I debug this?
Update
If I remove the Salt, it works; the strange thing is it used to work with the Salt, and I can't figure out why it doesn't anymore.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您想使用盐,您也必须将其传递给 ValidateAntiForgeryToken 过滤器:
If you want to use a salt you have to pass it to the
ValidateAntiForgeryToken
filter too: