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
}

我不知道是什么让这个简单的表单在验证 CSRF 令牌时失败了。我该如何调试呢?

更新

如果我去除盐,它会起作用;奇怪的是它曾经与 Salt 一起使用,我不知道为什么它不再使用了。

4

1 回答 1

5

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

[HttpPost]
[ValidateAntiForgeryToken(Salt = "Posts/Create")]
public JsonResult Create(string url)
{ 
  ...
于 2012-02-20T02:39:52.093 回答