加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – ASP .NET核心Cookie身份验证到期时返回时从时间戳更

发布时间:2020-12-15 19:50:57 所属栏目:asp.Net 来源:网络整理
导读:我使用ASP .NET Core RC1与Facebook身份验证和silding窗口cookie过期设置如下: app.UseIdentity();app.UseFacebookAuthentication(); 和 services.AddIdentityApplicationUser,IdentityRole((options ={ options.Cookies.ApplicationCookie.CookieName = "m
我使用ASP .NET Core RC1与Facebook身份验证和silding窗口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的到期时间设置为“会话”,因此实际上用户必须重新验证每次其他访问.

为什么会这样?我没有正确配置吗?

更新:
我现在已经完成了一些没有SlidingExpiration的测试,问题仍然存在.返回页面后,cookie的到期时间将更改为“会话”.我正在使用Chrome.

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

解决方法

简答

设置isPersistent:调用SignInManager.ExternalLoginSignInAsync时为true.

细节

在ASP.NET Core Web Application模板中,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 …

…在浏览器会话中持续存在.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读