未提供所需的防伪标记或无效

bev*_*qua 3 salt csrf antiforgerytoken asp.net-mvc-3

@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
}
Run Code Online (Sandbox Code Playgroud)

在验证CSRF令牌时,我无法意识到这个简单形式的失败.我该怎么调试呢?

更新

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

pju*_*ble 5

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

[HttpPost]
[ValidateAntiForgeryToken(Salt = "Posts/Create")]
public JsonResult Create(string url)
{ 
  ...
Run Code Online (Sandbox Code Playgroud)