Я не могу заставить аутентификацию файлов cookie работать с функцией AWS Lambda, используя .NET Core 2.1 MVC.
Я пробовал множество вариантов файлов cookie. Я могу войти в систему и увидеть, как в ответе создается файл cookie asp, но обычно я возвращаюсь на экран входа в систему после обновления или нажатия на любую ссылку, например. следующий запрос к серверу. * Обновление: кажется, у меня он находится в состоянии, когда мне нужно войти в систему только дважды, и он остается в системе. Это также вторая функция Lambda, использующая .net 2.1, где я заметил это поведение.
У меня есть шлюз API, настроенный по умолчанию, который настраивается при развертывании с использованием расширения AWS для визуальной студии.
Мой текущий код startup.cs, который работает на локальном хосте:
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
// Cookie settings
options.Cookie.SameSite = SameSiteMode.Lax;
options.Cookie.SecurePolicy = CookieSecurePolicy.SameAsRequest;
options.LoginPath = "/Login";
options.LogoutPath = "/Logout";
options.AccessDeniedPath = "/Login";
options.Cookie.Name = "myapp.auth";
options.Cookie.HttpOnly = true;
options.Cookie.Expiration = TimeSpan.FromDays(1);
});
services.ConfigureApplicationCookie(options =>
{
// Cookie settings, only this changes expiration
options.SlidingExpiration = true;
options.ExpireTimeSpan = TimeSpan.FromDays(1);
});
services.AddAntiforgery(options => { options.Cookie.Expiration = TimeSpan.Zero; });
а также
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseAuthentication();
app.UseMvc();
}
Я также пытался использовать следующее при входе в систему:
await HttpContext.SignInAsync(principal, new AuthenticationProperties
{
ExpiresUtc = DateTime.UtcNow.AddHours(12),
IsPersistent = true
});
Просто используя следующее, я буду оставаться в системе, но мне нужно дважды войти в систему, прежде чем файл cookie сохранится (еще раз после нажатия на что-либо и повторного перенаправления для входа в систему):
await HttpContext.SignInAsync(principal);