Angular 6 и AutoValidateAntiforgeryToken

Я много искал, но не нашел, как реализовать AutoValidateAntiforgeryToken.
Я создаю Angular 6 spa с TypeScript, подключаясь к конечной точке .NET Core 2.1
В ConfigureServices добавлено

services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN");

перед добавлением AddMvc() в Configure

app.Use(next => context =>
{
    string path = context.Request.Path.Value;
    if (string.Equals(path, "/", StringComparison.OrdinalIgnoreCase) || string.Equals(path, "/index.html", StringComparison.OrdinalIgnoreCase))
    {
        // We can send the request token as a JavaScript-readable cookie,
        // and Angular will use it by default.
        var tokens = antiforgery.GetAndStoreTokens(context);
        context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken, new CookieOptions() { HttpOnly = false });
    }
    return next(context);
});

Документация Angular не ясна, если я правильно понял, я должен прочитать файл cookie с именем X-XSRF-TOKEN и передать его обратно в вызове http в качестве заголовка: но я пытаюсь прочитать этот файл cookie в angular (используя ngx-cookie-service, с код как this.cookieSvc.get("X-XSRF-TOKEN")) этот файл cookie пуст.
Если кто-то может помочь, спасибо.


person Roberto Alessi    schedule 19.09.2018    source источник
comment
Вы устанавливаете файл cookie с именем XSRF-TOKEN, но пытаетесь прочитать файл cookie с именем X-XSRF-TOKEN.   -  person Kirk Larkin    schedule 19.09.2018


Ответы (1)


Для вашей проблемы проверьте пункты ниже, чтобы лучше понять вашу проблему.

  1. Для CookieXSRFStrategy он настраивает XSRF-TOKEN как cookie name и X-XSRF-TOKEN как header Name для XSRF.
  2. Чтобы соответствовать Angular, Asp.Net Core работайте с этим соглашением так же, как и вы.

    • Настройте свое приложение для предоставления маркера в файле cookie с именем XSRF-TOKEN.

    • Настройте службу защиты от подделки для поиска заголовка с именем X-XSRF-TOKEN.

Итак, если вы хотите получить AntiforgeryToken с сайта Angular, попробуйте запросить файлы cookie с помощью XSRF-TOKEN.

person Edward    schedule 20.09.2018