добавить токен csrf в основной сервис Javascript asp.net на странице углового индекса - PullRequest
0 голосов
/ 30 августа 2018

Я много гуглю, все учебники только реализуют серверную часть. Я использую javascript Services в ядре .net для рендеринга Angular Application вместе с ядром .net webapi. Здесь моя стартовая конфигурация

app.UseStaticFiles();
        app.UseSpaStaticFiles();
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        loggerFactory.AddConsole(this.Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();
        //app.UseHttpsRedirection();

        app.Use(async (context, next) =>
        {
            string path = context.Request.Path.Value;
            if (path != null && !path.ToLower().Contains("/api"))
            {
                // XSRF-TOKEN used by angular in the $http if provided
                var tokens = antiforgery.GetAndStoreTokens(context);
                context.Response.Cookies.Append("X-XSRF-TOKEN",
                  tokens.RequestToken, new CookieOptions
                  {
                      HttpOnly = false,
                      Secure = true
                  }
                );
            }
            await next();
        });

        app.UseMvc();

        app.UseAuthentication();

        app.UseSpa(spa =>
        {
            spa.Options.SourcePath = "Ui";

            spa.UseSpaPrerendering(options =>
            {
                options.BootModulePath = $"{spa.Options.SourcePath}/dist/server/main.js";
                options.BootModuleBuilder = env.IsDevelopment()
                    ? new AngularCliBuilder(npmScript: "build:ssr")
                    : null;
            });


            if (env.IsDevelopment())
            {
                spa.UseAngularCliServer(npmScript: "start");
            }
        });

Я также добавляю токен csrf в мой раздел ConfigureServices:

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

Я хочу добавить токен csrf в раздел app.UseSpa для представления в приложении index.html по умолчанию. Если я ошибаюсь, пожалуйста, предложите мне лучшее решение для решения этой проблемы, содержащее угловой кодовый раздел.

...