ASP.NET Core Identity 3 Cookie超时

RC2发生了一个奇怪的问题。

我使用以下配置选项将Identity 3 ExpireTimeSpan设置为12小时

options.Cookies.ApplicationCookie.ExpireTimeSpan = new TimeSpan(12,0,0); 

登录到网站并保持不变约35-40分钟后,我收到401错误(对于我的ajaxpost调用)并刷新网站,我回到登录页面。

当我将ExpireTimeSpan设置为12小时时,为什么必须重新进行身份validation?

我需要其他设置或配置吗?

也,

如何在到期前剩下时间? 我想访问该信息,以便我可以警告我的用户他们的会话将在X时间后过期。

谢谢!

我发现了问题

问题在于SecurityStamp机制。 默认情况下,每隔30分钟validation一次安全标记。 这主要是因为在任何地方签到都是一种选择。 例如,当用户更改密码时,安全标记通常以身份更新。 这将使用户已登录的所有位置(除非他更改密码的位置)在30分钟后退出,因为邮票(通常是guid)已更改。

要实现此function,请在ISecurityStampStore实现ISecurityStampStore接口并实现GetSecurityStampAsync(User user, CancellationToken cancellationToken)方法

有关详细信息,您可以查看安全标记validation码以及30分钟后签署的原因

https://github.com/aspnet/Identity/blob/dev/src/Microsoft.AspNetCore.Identity/SecurityStampValidator.cs

注意:options.SecurityStampValidationInterval可以设置为增加时间检查,但不能解决问题。 在X时间之后,您仍将退出。