Я пытаюсь использовать инструменты инфраструктуры, чтобы добавить простую проверку CSRF в ASP.NET Core React SPA.Само приложение, по сути, является установкой create-реагировать на приложение (один index.html с корневым элементом и всем остальным загружается из связанного JavaScript).
Работа с некоторой информацией, найденной по ссылкам, таким как этот , я установил следующее в моем Startup.ConfigureServices
:
services.AddAntiforgery(options => options.Cookie.Name = "X-CSRF-TOKEN");
и подтвердил в моих инструментах Chrome, что cookie устанавливается.Если я опущу приведенную выше строку, cookie все равно будет установлен с частично рандомизированным именем, например: .AspNetCore.Antiforgery.RAtR0X9F8_w
В любом случае, cookie устанавливается.Я также подтвердил, что при каждом перезапуске всего приложения значение cookie обновляется, поэтому инфраструктура активно устанавливает этот cookie.
Наблюдая за сетевыми запросами в моих инструментах Chrome, я подтверждаю, что cookie являетсяотправляется на сервер по запросу AJAX.Размещение точки останова на сервере и наблюдение значения Request.Cookies
в действии контроллера также подтверждают это.
Однако, если я украшу любое такое запрашиваемое действие AJAX с помощью [ValidateAntiForgeryToken]
, то ответ всегда будет пустым 400.
Есть ли шаг конфигурации, который я где-то пропустил?Возможно, атрибут действия находится не в том месте, и мне нужно использовать другую проверку?