ASP.NET Core Identity 3 Cookie 超时
Posted
技术标签:
【中文标题】ASP.NET Core Identity 3 Cookie 超时【英文标题】:ASP.NET Core Identity 3 Cookie timeout 【发布时间】:2016-11-18 23:14:55 【问题描述】:RC2 发生了一个奇怪的问题。
我已使用以下配置选项将 Identity 3 ExpireTimeSpan 设置为 12 小时
options.Cookies.ApplicationCookie.ExpireTimeSpan = new TimeSpan(12,0,0);
登录网站并保持大约 35-40 分钟不变后,我收到 401 错误(对于我的 ajax 帖子调用)并刷新网站后,我返回登录页面。
为什么我将 ExpireTimeSpan 设置为 12 小时后必须重新进行身份验证?
我需要其他设置或配置吗?
还有,
我怎样才能得到到期前的剩余时间?我想访问该信息,以便警告我的用户他们的会话将在 X 时间后过期。
谢谢!
【问题讨论】:
【参考方案1】:我发现了问题
问题在于 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 次之后,您仍会退出。
【讨论】:
所以没有滚动到期或类似的东西?太糟糕了!我想这也是我需要的。我的 cookie 在 30 分钟时超时,即使我的会话继续保持有效... 您能否发布您的代码,因为它位于您的项目中。即使合并您提到的更改,我仍然无法让我的工作。 Startup.cs 文件等 您是否使用数据库作为后端?活动目录?这完全取决于您的环境!如果您可以做一个提琴手或其他我们可以看到代码的东西,那将很有帮助! 是的,数据库后端,全部托管在 Azure 上。我今晚再试一次,然后回复你。 你有没有找到解决方案来解决它在 .net 中的问题?干杯。以上是关于ASP.NET Core Identity 3 Cookie 超时的主要内容,如果未能解决你的问题,请参考以下文章
Asp.Net core MVC6如何在Identity 3中初始添加角色
ASP.NET Core Identity 3.1:UserManager.RemoveFromRoleAsync 总是返回 UserNotInRole
ASP.NET Core Identity Server 3自定义修改Token过期刷新时间
ASP.NET Core 3:无法从根提供程序解析范围服务“Microsoft.AspNetCore.Identity.UserManager`1[Alpha.Models.Identity.User