gpt4 book ai didi

asp.net - 返回时,ASP .NET Core Cookie 身份验证过期从时间戳更改为 "Session"

转载 作者:行者123 更新时间:2023-12-02 18:35:12 25 4
gpt4 key购买 nike

我使用 ASP .NET Core RC1 进行 Facebook 身份验证,并设置滑动窗口 cookie 过期时间,如下所示:

app.UseIdentity();
app.UseFacebookAuthentication();

services.AddIdentity<ApplicationUser, IdentityRole>((options =>
{
options.Cookies.ApplicationCookie.CookieName = "myauthcookie";
options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(5);
options.Cookies.ApplicationCookie.SlidingExpiration = true;
}))
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();

当用户第一次登录时,这工作正常 - cookie 过期设置正确。但是,当用户返回页面时,cookie 的过期时间被设置为“Session”,因此实际上用户每次访问都必须重新进行身份验证。

为什么会发生这种情况?是我配置不正确吗?

更新:我现在在没有 SlidingExpiration 的情况下做了一些测试,问题仍然相同。返回页面后,cookie 的过期时间更改为“Session”。我正在使用 Chrome。

此外,我没有在 https 上运行。这可能是一个因素吗?

最佳答案

简短回答

调用 SignInManager.ExternalLoginSignInAsync 时设置 isPersistent: true

详细信息

在 ASP.NET Core Web 应用程序模板中,AccountController.ExternalLoginCallback 方法包含以下代码:

_signInManager.ExternalLoginSignInAsync(
info.LoginProvider,
info.ProviderKey,
isPersistent: true); <------ set a persistent cookie.

如果我们在调用 ExternalLoginSignInAsync 时设置了 isPersistent: true ,则此启动配置...

services.AddIdentity<ApplicationUser, IdentityRole>(options =>
{
options.Cookies.ApplicationCookie.CookieName = "MyApplicationCookie";
options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(5);
options.Cookies.ApplicationCookie.SlidingExpiration = true;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();

...此应用程序 cookie 中的结果...

MyApplicationCookie is persistent.

...在浏览器 session 中持续存在。

关于asp.net - 返回时,ASP .NET Core Cookie 身份验证过期从时间戳更改为 "Session",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36559511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com