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

时间:2012-02-20 02:07:32

标签: asp.net-mvc-3 csrf salt antiforgerytoken

@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令牌时失败了。 我该怎么调试呢?

更新

如果我取出盐,它会起作用;奇怪的是它曾经与盐一起工作,我无法弄清楚为什么它不再存在。

1 个答案:

答案 0 :(得分:5)

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

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