Требуемый токен против подделки не был предоставлен или был недействительным - PullRequest
3 голосов
/ 20 февраля 2012
@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 Ответ

5 голосов
/ 20 февраля 2012

Если вы хотите использовать соль, вы должны также передать ее в фильтр ValidateAntiForgeryToken:

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