#asp.net-mvc #antiforgerytoken
Вопрос:
в моем случае у меня возникает проблема
Маркер cookie для защиты от подделки и маркер поля формы не совпадают.
У меня несколько серверов, поэтому я установил одно и то же значение ключа компьютера для всех серверов, но все еще не уверен, почему эта проблема все еще существует.
Я также использую кэш вывода, когда я отключаю кэш вывода, то у меня возникает другая проблема, т. Е. «Требуемый файл cookie для защиты от подделки «__RequestVerificationToken_L015V1AvU1BP0″ отсутствует».
Есть ли какие-нибудь идеи, что мне следует проверить дальше?
Комментарии:
1. Проверьте конфигурацию обратного прокси-сервера. Возможно, вам потребуется настроить привязку сеанса на основе файлов cookie/IP к балансировщику нагрузки.
Ответ №1:
с добавлением кэша вывода в представление происходит кэширование. Таким образом, если доступ к странице осуществляется в течение времени кэширования, _RequestVerificationToken не отображается свежим с сервера.
Чтобы устранить проблему, есть два варианта
- Либо вы можете удалить кэш вывода
или из-за необходимости кэширования 2-й вариант
- Визуализируйте маркер подделки в отдельном вызове ajax из родительского представления, которое возвращает частичное представление, включающее маркер. При таком подходе ваше основное представление будет кэшироваться с использованием кэша вывода, но частичное представление, включающее маркер, кэшироваться не будет. Поэтому, когда мы отправим форму родительского представления на сервер, где мы проверяем токен, он будет работать нормально.
Ответ №2:
Это может быть какая-то проблема в настройке ключа машины. Как вы создали значение ключа машины ? Пожалуйста, дважды проверьте ключ машины. Создайте ключ компьютера в диспетчере IIS. Пожалуйста, перейдите по ссылкам ниже для справки, чтобы сгенерировать машинный ключ и добавить его в веб-конфигурацию, а затем добавить его во все интерфейсы.
https://support.winhost.com/kb/a1623/how-to-generate-a-machine-key-in-iis-manager.aspx