Я не могу заставить аутентификацию cookie-файлов работать с лямбда-функцией AWS с использованием .NET Core 2.1 MVC.
Я перепробовал множество вариантов параметров файлов cookie. Я могу войти в систему и увидеть, что в ответе создается файл cookie asp, но обычно я возвращаюсь на экран входа в систему после обновления или перехода по любой ссылке, например, следующий запрос к серверу. * Обновление. Похоже, что он находится в состоянии, когда мне нужно только дважды войти в систему сейчас, и он остается в системе. Это также вторая лямбда-функция, использующая .net 2.1, где я заметил такое поведение.
У меня есть API-шлюз, настроенный со значениями по умолчанию, которые устанавливаются при развертывании с использованием расширения AWS для visual studio.
Мой текущий код startup.cs, который работает на localhost:
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);