Ядро ASP.Net с токеном React Antiforgery не работает ⇐ C#
-
Anonymous
Ядро ASP.Net с токеном React Antiforgery не работает
Я пытаюсь разработать приложение с использованием ASP.NET Core 7 с React, и мне нужно реализовать защиту от подделки для всех запросов. Я проводил исследования в Интернете в течение нескольких дней и экспериментировал с различными решениями; однако я до сих пор не знаю, как решить эту проблему.
Ниже приведен мой код, и я готов ответить на любые дополнительные вопросы.
Program.CS
builder.Services.AddAntiforgery( { options.Cookie.Name = "X-XSRF-TOKEN"; options.Header = "X-XSRF-TOKEN"; }); Контроллер
[Маршрут("/Test2")] [ВалидатеАнтиФоржериТокен] [HttpPost] общедоступный PostResponse Test2 (PostRequest pr) { вернуть RunVehCheck(pr); } React (.js)
const getCSRFToken = async () => { const ответ = ожидание выборки("https://localhost:7277/Test2", { метод: «ПОЛУЧИТЬ» }); const csrfToken = ожидайте ответа.json(); вернуть csrfToken; } useEffect(() => { получитьCSRFToken(); }, []); const handleSubmit = async (e) => { е.preventDefault() выборка("https://localhost:7277/Test2", { метод: «ПОСТ», заголовки: { «Тип контента»: «приложение/json», «X-XSRF-TOKEN»: getCSRFToken }, тело: JSON.stringify({ «vehicleReg»: inputValue.current.value }) }) .then((res) => { если (res.status === 200) { вернуть res.json() } еще { throw Error("Ошибка при публикации данных"); } }) .then((res) => { console.log("Успешно отправлено", res) }) .catch((er) => { console.log("Ошибка получения данных", э) }) }
Я пытаюсь разработать приложение с использованием ASP.NET Core 7 с React, и мне нужно реализовать защиту от подделки для всех запросов. Я проводил исследования в Интернете в течение нескольких дней и экспериментировал с различными решениями; однако я до сих пор не знаю, как решить эту проблему.
Ниже приведен мой код, и я готов ответить на любые дополнительные вопросы.
Program.CS
builder.Services.AddAntiforgery( { options.Cookie.Name = "X-XSRF-TOKEN"; options.Header = "X-XSRF-TOKEN"; }); Контроллер
[Маршрут("/Test2")] [ВалидатеАнтиФоржериТокен] [HttpPost] общедоступный PostResponse Test2 (PostRequest pr) { вернуть RunVehCheck(pr); } React (.js)
const getCSRFToken = async () => { const ответ = ожидание выборки("https://localhost:7277/Test2", { метод: «ПОЛУЧИТЬ» }); const csrfToken = ожидайте ответа.json(); вернуть csrfToken; } useEffect(() => { получитьCSRFToken(); }, []); const handleSubmit = async (e) => { е.preventDefault() выборка("https://localhost:7277/Test2", { метод: «ПОСТ», заголовки: { «Тип контента»: «приложение/json», «X-XSRF-TOKEN»: getCSRFToken }, тело: JSON.stringify({ «vehicleReg»: inputValue.current.value }) }) .then((res) => { если (res.status === 200) { вернуть res.json() } еще { throw Error("Ошибка при публикации данных"); } }) .then((res) => { console.log("Успешно отправлено", res) }) .catch((er) => { console.log("Ошибка получения данных", э) }) }
Мобильная версия