Сессия ASP Net Core 2.1 - PullRequest
       20

Сессия ASP Net Core 2.1

0 голосов
/ 30 октября 2018

Я сейчас занимаюсь разработкой API в .Net Core 2.1 с клиентским приложением в Vue 2 с Nuxt, и у меня проблемы с сохранением объекта в сеансе в ASP .Net. Я просмотрел эту и другие ссылки, прежде чем задать этот вопрос, но ничто не могло мне помочь. Оказывается, я пробовал это с Почтальоном, и если это работает, но я не понимаю, почему это не работает с моим приложением.

Это мой Startup.cs

public class Startup
    {
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

public IConfiguration Configuration { get; }

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        options.CheckConsentNeeded = context => false;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });
// Add Database
// End Add Database
    services.AddCors(options => 
{
    options.AddPolicy("AllowSpecificOrigin", builder =>
    builder.AllowAnyHeader()
           .AllowAnyMethod()
           .AllowAnyOrigin()
));
});
 services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    .AddDistributedMemoryCache();

    services.AddSession(options =>
    {
        options.IdleTimeout = TimeSpan.FromMinutes(1440);
        options.Cookie.HttpOnly = true;
        options.Cookie.IsEssential = true;
    });
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }

    app.UseCookiePolicy();
    app.UseCors("AllowSpecificOrigin");
    app.UseSession();
    app.UseMvc();
}
}

В моем контроллере:

[Route("api/customer/[controller]")]
[ApiController]
public class ClientController : ControllerBase { ...

... Получить и установить Session Var

var model = HttpContext.Session.GetString("User")

и другой контроллер

HttpContext.Session.SetString("User", "Hello World")

HttpContext меняет идентификатор каждый раз, когда я делаю запрос на ajax, но почтальон не меняет идентификатор, и поэтому я могу восстановить cookie.

1 Ответ

0 голосов
/ 30 октября 2018

Вероятно, вам нужно установить флаг withCredentials при выполнении запроса AJAX. Это не должно требоваться для запросов с одного и того же сайта, но вы упомянули CORS и не указали, что это тот же сайт. С jQuery это просто означает добавление его к xhrFields в вашем объекте параметров AJAX:

$.ajax({
    ...
    xhrFields: {
        withCredentials: true
    }
});

В других библиотеках может быть другая методология, но у всех должен быть какой-то способ установить этот флаг для объекта XMLHttpRequest.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...