5

我有一个奇怪的问题与RC2发生。ASP.NET核心标识3 Cookie超时

我已经安装使用标识以下配置选项

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

登录到网站,并离开它触及了〜35-40mins后3个ExpireTimeSpan到12个小时,我得到一个401错误(我的AJAX张贴电话)和刷新网站,我回到登录页面。

为什么我必须在将ExpireTimeSpan设置为12小时时重新进行身份验证?

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

此外,

我怎样才能得到期满之前发生剩余的时间?我想访问这些信息,以便我可以警告我的用户他们的会话将在X时间后过期。

谢谢!

回答

5

我发现问题

问题在于SecurityStamp机制。 默认情况下,每隔30分钟验证一次安全印章。这主要是因为到处登录是一种选择。 当用户更改密码时,安全戳通常以身份更新。 这将使用户签署的所有位置(除了他更改密码的位置)在30分钟后退出,因为邮票(通常是guid)已更改。

要实现此功能,实现您的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时间后,您仍然会退出。

+0

所以没有滚动到期或类似的东西?太糟糕了!我认为这也是我需要的。即使我的会话继续保持有效,我的Cookie仍会在30分钟后超时... – ganders

+0

您是否可以在您的项目中发布代码?即使包含您提到的更改,我仍然无法工作。 Startup.cs文件等 – ganders

+0

您是否使用数据库作为后端?活动目录?这一切都取决于你的环境!如果你可以做一个小提琴手或者我们可以看到代码的东西,这会很有帮助! – DOMZE