Устранение проблем с фальсификацией токенов - PullRequest
34 голосов
/ 24 апреля 2011

У меня есть сообщение в форме, в котором постоянно выдается ошибка с токеном против подделки.

Вот моя форма:

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.EditorFor(m => m.Email)
    @Html.EditorFor(m => m.Birthday)
    <p>
        <input type="submit" id="Go" value="Go" />
    </p>
}

Вот мой метод действия:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Join(JoinViewModel model)
{
    //a bunch of stuff here but it doesn't matter because it's not making it here
}

Вот ключ машины в web.config:

<system.web>
  <machineKey validationKey="mykey" decryptionKey="myotherkey" validation="SHA1" decryption="AES" />
</system.web>

И вот ошибка, которую я получаю:

A required anti-forgery token was not supplied or was invalid.

Я читал, что изменение пользователей в HttpContext приведет к аннулированию токена, но здесь этого не происходит. HttpGet в моем действии Join просто возвращает представление:

[HttpGet]
public ActionResult Join()
{
    return this.View();
}

Так что я не уверен, что происходит. Я искал вокруг, и все, кажется, предполагает, что это либо смена машинного ключа (циклы приложения), либо смена пользователя / сеанса.

Что еще может происходить? Как я могу устранить это?

Ответы [ 11 ]

0 голосов
/ 16 мая 2017

HTML-журнал ошибок не является правильной строкой.

Вы должны проверить, что все значения загрузки на странице не равны нулю.

...