ASP.NET 核心身份 3 Cookie 超时

本文关键字:Cookie 超时 身份 NET 核心 ASP | 更新日期: 2023-09-27 17:57:04

我在RC2上遇到了一个奇怪的问题。

我已使用以下配置选项将身份 3 过期时间跨度设置为 12 小时

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

登录网站并保持原样~35-40分钟后,我收到401错误(对于我的ajax帖子调用)并刷新网站,我回到登录页面。

为什么在将过期时间跨度设置为 12 小时时必须重新进行身份验证?

是否需要其他设置或配置?

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

谢谢!

ASP.NET 核心身份 3 Cookie 超时

我发现了问题

问题出在安全印章机制上。默认情况下,每 30 分钟验证一次安全标记。这主要是因为可以选择在任何地方登录。例如,当用户更改密码时,通常会在身份中更新安全标记。这将使用户登录的所有位置(他更改密码的位置除外)在 30 分钟后注销,因为图章(通常是 GUID)已更改。

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

有关更多信息,您可以查看安全标记验证程序代码以及它在 30 分钟后注销的原因

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

注意:选项。可以设置SecurityStampValidationInterval以增加时间检查,但它不能解决问题。X 次后,您仍将注销。