我无法通过使用 .NET Core 2.1 MVC 的 AWS Lambda 函数获得 cookie 身份验证。
我已经尝试了很多 cookie 选项的变体。我可以登录并看到响应中创建的 asp cookie,但通常在我刷新或单击任何链接(例如对服务器的下一个请求)后,我会返回登录屏幕。*更新:看来我的状态是我现在只需最初登录两次并保持登录状态。这也是我注意到这种行为的第二个使用 .net 2.1 的 Lambda 函数。
我配置了 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);