ASP.NET 核心身份 3 Cookie 超时
ASP.NET Core Identity 3 Cookie timeout
我在使用 RC2 时遇到了一个奇怪的问题。
我使用以下配置选项将 Identity 3 ExpireTimeSpan 设置为 12 小时
options.Cookies.ApplicationCookie.ExpireTimeSpan = new TimeSpan(12,0,0);
登录网站并保持原样约 35-40 分钟后,我收到 401 错误(针对我的 ajax post 调用)并刷新网站,我返回登录页面。
为什么我将 ExpireTimeSpan 设置为 12 小时后必须重新验证?
我需要其他设置或配置吗?
此外,
如何获得到期前的剩余时间?我想访问该信息,以便我可以警告我的用户他们的会话将在 X 时间后过期。
谢谢!
我发现了问题
问题出在SecurityStamp机制上。
默认情况下,每 30 分钟验证一次安全戳。这主要是因为可以选择在任何地方登录。
例如,当用户更改密码时,安全戳通常会在身份中更新。
这将使用户登录的所有位置(除了他更改密码的位置)在 30 分钟后退出,因为图章(通常是 guid)已更改。
要实现此功能,请在您的 UserStore 中实现 ISecurityStampStore<T>
接口并实现 GetSecurityStampAsync(User user, CancellationToken cancellationToken)
方法
有关详细信息,您可以查看安全戳验证程序代码以及它在 30 分钟后将您注销的原因
注意:
可以设置options.SecurityStampValidationInterval来增加检查时间,但不能解决问题。 X 次后,您仍然会退出。
我在使用 RC2 时遇到了一个奇怪的问题。
我使用以下配置选项将 Identity 3 ExpireTimeSpan 设置为 12 小时
options.Cookies.ApplicationCookie.ExpireTimeSpan = new TimeSpan(12,0,0);
登录网站并保持原样约 35-40 分钟后,我收到 401 错误(针对我的 ajax post 调用)并刷新网站,我返回登录页面。
为什么我将 ExpireTimeSpan 设置为 12 小时后必须重新验证?
我需要其他设置或配置吗?
此外,
如何获得到期前的剩余时间?我想访问该信息,以便我可以警告我的用户他们的会话将在 X 时间后过期。
谢谢!
我发现了问题
问题出在SecurityStamp机制上。 默认情况下,每 30 分钟验证一次安全戳。这主要是因为可以选择在任何地方登录。 例如,当用户更改密码时,安全戳通常会在身份中更新。 这将使用户登录的所有位置(除了他更改密码的位置)在 30 分钟后退出,因为图章(通常是 guid)已更改。
要实现此功能,请在您的 UserStore 中实现 ISecurityStampStore<T>
接口并实现 GetSecurityStampAsync(User user, CancellationToken cancellationToken)
方法
有关详细信息,您可以查看安全戳验证程序代码以及它在 30 分钟后将您注销的原因
注意: 可以设置options.SecurityStampValidationInterval来增加检查时间,但不能解决问题。 X 次后,您仍然会退出。