ASP .NET Core Cookie Authentication expiration changes from timestamp to “Session” upon return
我正在使用ASP.NET Core RC1,并进行如下设置的Facebook身份验证和屏蔽窗口Cookie过期:
1 2 | app.UseIdentity(); app.UseFacebookAuthentication(); |
和
1 2 3 4 5 6 7 8 | 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上运行。这可能是一个因素吗?
简短答案
在调用
细节
在ASP.NET Core Web应用程序模板中,
1 2 3 4 | _signInManager.ExternalLoginSignInAsync( info.LoginProvider, info.ProviderKey, isPersistent: true); <------ set a persistent cookie. |
如果在调用
1 2 3 4 5 6 7 8 | 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中的结果...
...,它在浏览器会话之间持续存在。