sev*_*rin 5 asp.net asp.net-core-mvc asp.net-core
我使用ASP .NET Core RC1与Facebook身份验证和silding窗口cookie过期设置如下:
app.UseIdentity();
app.UseFacebookAuthentication();
Run Code Online (Sandbox Code Playgroud)
和
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();
Run Code Online (Sandbox Code Playgroud)
这在用户首次登录时工作正常 - cookie过期设置正确.但是,当用户返回页面时,cookie的到期时间设置为"会话",因此实际上用户必须重新验证每次其他访问.
为什么会这样?我没有正确配置吗?
更新:我现在已经完成了一些没有SlidingExpiration的测试,问题仍然存在.返回页面后,cookie的到期时间将更改为"会话".我正在使用Chrome.
另外,我没有在https上运行.这可能是一个因素吗?
isPersistent: true调用时设置SignInManager.ExternalLoginSignInAsync。
在 ASP.NET Core Web 应用程序模板中,该AccountController.ExternalLoginCallback方法包含以下代码:
_signInManager.ExternalLoginSignInAsync(
info.LoginProvider,
info.ProviderKey,
isPersistent: true); <------ set a persistent cookie.
Run Code Online (Sandbox Code Playgroud)
如果我们isPersistent: true在调用时设置ExternalLoginSignInAsync,这个启动配置...
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();
Run Code Online (Sandbox Code Playgroud)
...此应用程序 cookie 中的结果...
...在浏览器会话中持续存在。
| 归档时间: |
|
| 查看次数: |
3773 次 |
| 最近记录: |