ASP.NET核心身份3 Cookie超时

时间:2016-07-15 16:45:00

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

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

我使用以下配置选项

将Identity 3 ExpireTimeSpan设置为12小时
options.Cookies.ApplicationCookie.ExpireTimeSpan = new TimeSpan(12,0,0);

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

为什么在将ExpireTimeSpan设置为12小时后需要重新进行身份验证?

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

此外,

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

谢谢!

1 个答案:

答案 0 :(得分:8)

我发现了问题

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

要实现此功能,请在UserStore中实施ISecurityStampStore<T>接口并实施GetSecurityStampAsync(User user, CancellationToken cancellationToken)方法

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

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

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