ASP.NET核心标识会话比配置发生的时间更早到期

时间:2017-09-12 04:24:19

标签: c# asp.net-core asp.net-identity

所以在我的应用程序中,我将身份配置为:

services.ConfigureApplicationCookie(cfg =>
            {
                cfg.Cookie.Name = "application_ms_state";
                cfg.Cookie.Expiration = TimeSpan.FromDays(1);
                cfg.SlidingExpiration = true;
            });

但到期时间差不多会在20分钟内发生。是否有人对此有所了解?

2 个答案:

答案 0 :(得分:4)

经过几天的搜索,感谢this answer后面的人,我发现问题是,身份检查每30分钟(默认情况下,可配置),看看发出的身份验证是否有效,因此它会检查看到如果正在实施UserStore<>的类正在实施IUserSecurityStampStoreUserManager.SupportsUserSecurityStamp)。由于我的实现IUserStroe的MembershipService类没有实现IUserSecurityStampStore<>,因此在30分钟的间隔后,我最终得到了无效的安全标记和一个== SignOut的空主体。

检查此github issue以获取所提及的代码段的参考。

答案 1 :(得分:1)

阅读文档评论。 https://github.com/aspnet/Security/blob/a53bf093a7d86b35e019c80515c92d7626982325/src/Microsoft.AspNetCore.Authentication.Cookies/CookieAuthenticationOptions.cs#L147 ExpiresTimeSpan和Expiration控制不同的东西。 ExpiresTimeSpan是用于滑动到期的那个。