Как я могу ввести токен AntiForgery? - PullRequest
0 голосов
/ 30 апреля 2020

При использовании в моем _Layout.cshtml

@using Microsoft.AspNetCore.Antiforgery
@inject IAntiforgery AntiForgery;

я ожидаю, что RequestVerificationToken будет присутствовать в заголовках запроса.

Но ожидания не выполнены. При проверке заголовков запроса, RequestVerificationToken отсутствует вообще.

Это как-то связано с net Core 3.0, или я что-то упустил?

1 Ответ

0 голосов
/ 30 апреля 2020

Если вы используете запрос ajax для отправки antiforgeryToken, выполните следующие действия. иначе RequestVerificationToken будет автоматически добавлен в formData

Добавьте следующее к вашим cs html и js

@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
@functions{
    public string GetAntiXsrfRequestToken()
    {
        return Xsrf.GetAndStoreTokens(Context).RequestToken;
    }
}

<form>
      <input type="hidden" id="RequestVerificationToken"
               name="RequestVerificationToken" value="@GetAntiXsrfRequestToken()" />
</form>

Добавьте это к вашему экземпляру XMLHttpRequest

xhttp.setRequestHeader("RequestVerificationToken", 
                    document.getElementById('RequestVerificationToken').value);
...