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 时间后过期。
谢谢!
我发现了问题
问题出在安全印章机制上。默认情况下,每 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 次后,您仍将注销。