@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令牌时失败了。 我该怎么调试呢?
更新
如果我取出盐,它会起作用;奇怪的是它曾经与盐一起工作,我无法弄清楚为什么它不再存在。
答案 0 :(得分:5)
如果你想使用盐,你也必须将它传递给ValidateAntiForgeryToken
过滤器:
[HttpPost]
[ValidateAntiForgeryToken(Salt = "Posts/Create")]
public JsonResult Create(string url)
{
...