未提供所需的防伪令牌或该令牌无效

发布于 2025-01-07 03:45:23 字数 519 浏览 1 评论 0原文

@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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌逼全场 2025-01-14 03:45:23

如果您想使用盐,您也必须将其传递给 ValidateAntiForgeryToken 过滤器:

[HttpPost]
[ValidateAntiForgeryToken(Salt = "Posts/Create")]
public JsonResult Create(string url)
{ 
  ...

If you want to use a salt you have to pass it to the ValidateAntiForgeryToken filter too:

[HttpPost]
[ValidateAntiForgeryToken(Salt = "Posts/Create")]
public JsonResult Create(string url)
{ 
  ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文