Маркер антиподделки не мог быть дешифрован

У меня есть форма:

@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {
@Html.AntiForgeryToken()
@Html.ValidationSummary()...

и действие:

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl, string City)
{
}

иногда (один раз в неделю) я получаю ошибку:

Маркер антиподделки не мог быть дешифрован. Если это приложение размещается Веб-фермой или кластером, удостоверьтесь, что все машины выполняют ту же версию Веб-страниц ASP.NET и что конфигурация указывает явные ключи шифрования и проверки. AutoGenerate не может использоваться в кластере.

я пробую, добавляют к webconfig:

<machineKey validationKey="AutoGenerate,IsolateApps"  
    decryptionKey="AutoGenerate,IsolateApps" />

но ошибка все еще иногда появляется

Я заметил, что эта ошибка происходит, например, когда человек произошел из одного компьютера и затем пробующий другой компьютер

Или иногда автоматический набор значений с неправильным типом данных как bool к целому числу к полю формы любым кодом jQuery также проверьте его.

58
задан 8 May 2018 в 00:45

1 ответ

Если Вы будете использовать Kubernetes и иметь больше чем одну переходную приставку для Вашего приложения, то это, скорее всего, заставит проверку запроса перестать работать, потому что переходная приставка, которая генерирует RequestValidationToken, является не обязательно переходной приставкой, которая проверит маркер при РЕГИСТРАЦИИ назад на приложение. Фиксация должна быть должна настроить Ваш nginx-контроллер или безотносительно входного ресурса, который Вы используете и говорите этому загружать баланс так, чтобы каждый клиент использовал одну переходную приставку для всей коммуникации.

Обновление: Мне удалось зафиксировать его путем добавления следующих аннотаций к моему входу:

https://kubernetes.github.io/ingress-nginx/examples/affinity/cookie /

Name    Description Values
nginx.ingress.kubernetes.io/affinity    Sets the affinity type  string (in NGINX only cookie is possible
nginx.ingress.kubernetes.io/session-cookie-name Name of the cookie that will be used    string (default to INGRESSCOOKIE)
nginx.ingress.kubernetes.io/session-cookie-hash Type of hash that will be used in cookie value  sha1/md5/index
2
ответ дан 1 November 2019 в 13:15

Другие вопросы по тегам:

Похожие вопросы: