Angular 6 и AutoValidateAntiforgeryToken - PullRequest
       35

Angular 6 и AutoValidateAntiforgeryToken

0 голосов
/ 19 сентября 2018

Я много искал, но не нашел, как реализовать 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 в угловом формате (с помощью ngx-cookie-service, с кодом this.cookieSvc.get ("X-XSRF-TOKEN")), этот файл cookie пуст,Если кто-то может помочь, спасибо.

1 Ответ

0 голосов
/ 20 сентября 2018

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

  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.

...