ASP.NET MVC Обязательное поле формы защиты от подделки __RequestVerificationToken отсутствует

Я получаю эту ошибку в моей форме входа:

Отсутствует обязательное поле формы защиты от подделки "__RequestVerificationToken".

Я использую проект ASP.NET MVC по умолчанию, созданный с помощью шаблона Visual Studio 2015.

Логин.cshtml:

@using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
    @Html.AntiForgeryToken()
    ...
}

Контроллер аккаунта:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    ...
}

Определение ключа машины в web.config:

<machineKey validationKey="6237432C07086CE1A8FAAD3CC71A3AC1DE0B22DE9061D7CAF798E5B18E6E888D7A3F88004D0A928952CB81598ED565B26F8175E30294B1F5A1F3220229163F1C" 
    decryptionKey="E61A22E8DEE09CB4640B2863705CE6BC95E64C8797CAB8CAE7463BE7F9AB1B94" 
    validation="SHA1" 
    decryption="AES" />

Сгенерированная HTML-страница:

<form action="/Account/Login" class="form-horizontal" method="post" role="form">
<input name="__RequestVerificationToken" type="hidden" value="Ei4E03S5nvvdR9N2KJg8aGDQK9fI3xbBJLJzT3z3c7QAyyxbGf11ncmTAiD-8itHoKWYuNNghOsmyTS2hBDlmkv7Ttk1" />

В моем браузере есть файл cookie с именем __RequestVerificationToken и значением qM5XwYIQiiHk2lumHWcXHOPPji2VptN95X0FDLneyXSN3_sGrF6fe7zt8KHC5MjopQoBh9sJl5vEJLGOAzy1h-8R-nk1, срок действия которого истекает в конце сеанса: When the browsing session ends.

Эта ошибка не происходит локально с IIS Express, но после того, как я развернул проект на сервере, эта ошибка возникла.

Очистка куки и перезапуск браузера не решили проблему.

Любая идея?

ИЗМЕНИТЬ:

Я удалил токен защиты от подделки как из контроллера, так и из представления и обнаружил кое-что странное: форма отправляет данные без проблем, но где-то между отправкой и проверкой все поля становятся нулевыми или пустыми. __RequestVerificationToken стал нулевым перед проверкой, и это вызывает проблему. Теперь я исследую эту новую проблему :(


person Ali Behzadian Nejad    schedule 13.05.2016    source источник
comment
пожалуйста, покажите нам отправленный запрос на сервер. щелкните правой кнопкой мыши элемент проверки страницы -> вкладка сети   -  person Mohammad Olfatmiri    schedule 14.05.2016


Ответы (1)


В вашем Web.config найдите <httpCookies requireSSL="true" />property и закомментируйте его или настройте свой проект, чтобы всегда использовать SSL.

person joint_ops    schedule 13.05.2016