同步OWIN Cookie过期(滑动)和会话超时

时间:2016-10-28 11:46:13

标签: c# asp.net-mvc authentication cookies owin

背景

我有一个半单页面应用程序(登录通过ajax调用在一个页面上进行后的所有服务器交互),它使用会话存储和OWIN cookie身份验证。会话和cookie过期都设置为15分钟,cookie配置为使用滑动过期。

在每次服务器交互时,客户端上的计时器将重置为15分钟。如果14分钟内未记录任何活动,则会显示一个模式,其中有一个滚动条,提醒用户该会话将很快超时。

问题

我们遇到了一个问题,在某些情况下,我们的会话比OWIN cookie更长。

根据CookieAuthenticationOptions类:

  

SlidingExpiration设置为true,以指示中间件在处理请求时超过到期时间的一半时,重新发布具有新到期时间的新Cookie。

我们有这样的场景:用户在到期时间之前使用应用程序“,然后让应用程序闲置几分钟。当用户看到会话过期通知时,他们会尝试续订会话。但由于OWIN cookie从未续订,因此应用程序超时并将其重定向到登录页面(过早地根据过期通知所说的内容)。

support article完全说明了我们的情况:

  

我们举一个例子:如果登录页面是在下午5:00 00:00:00访问的,那么如果超时属性为10且slideExpiration属性为,则它应在5:10 00:00:00 PM到期设为TRUE。现在,如果在下午5:05 00:00:00再次浏览任何网页,则cookie和票证超时时间将重置为下午5:15 00:00:00。

     

注意如果在过期时间的一半之前访问网页,则不会重置故障单过期时间。例如,如果在下午5:04 00:00:00再次访问任何网页,则不会重置cookie和票证超时期限。

问题/评论

以前有没有人碰到这个?我们如何避免它?调整OWIN超时只会延长问题。

我无法帮助认为这是OWIN框架中的一个可怕的设计缺陷,或者我们没有正确使用它。

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:2)

我们最终实现的解决方案是使用保持活动逻辑解决方案。我真的希望他们能够在传统意义上实现“滑动过期”,但现在必须这样做。

解决方案:

  

仅向服务器发送保持活动请求,直到一半之后   OWIN饼干生命过去了。发送保持活动状态时,将更新cookie,这将使会话和cookie超时保持同步。

相关问题