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

6

背景

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

在每次服务器交互时,客户端的计时器会重置回15分钟。 如果在14分钟内未记录任何活动,则会显示一个模态窗口,其中包含倒数提示用户会话很快将超时的信息。

问题

我们遇到了这样一种情况,即在某些情况下,我们的会话的生命周期比OWIN Cookie更长。

根据CookieAuthenticationOptions类:

SlidingExpiration设置为true,以指示中间件每次处理距离过期窗口期超过一半的请求时重新发出具有新过期时间的新cookie。

我们遇到的场景是,在“过期窗口期”的“一半之前”,用户使用应用程序,然后让其空闲几分钟。 当用户看到会话过期通知时,他们尝试更新他们的会话。 但由于OWIN cookie从未更新,应用程序会超时并将用户重定向到登录页面(根据过期通知信息过早地进行)。

这篇支持文章恰好说明了我们的情况:

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

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

问题/评论

有人曾经遇到过这种情况吗?我们该如何避免它?调整OWIN超时只会延长该问题。

我不禁想到,这要么是OWIN框架中的一个糟糕的设计缺陷,要么就是我们没有正确使用它。

感谢您的任何帮助。谢谢。


你是否偶然使用了认证提供者? - Stinky Towel
是的,Microsoft.Owin.Security.Cookies.CookieAuthenticationProvider可以使用一些简单的逻辑在"OnValidateIdentity"方法中注入一些声明。 - user6479749
你能否编辑你的帖子并附上你的cookie授权码? - Stinky Towel
1个回答

2
我们最终采用的解决方案是通过保活逻辑来实现的。我真希望他们能更加传统地实现“滑动过期”,但暂时只能这样做了。
解决方案:
只有在经过OWIN Cookie的一半寿命之后才向服务器发送保活请求。当发送保活请求时,Cookie会被更新,从而使会话和Cookie超时时间保持同步。

传统上,cookie的超时时间是如何设置的?是在每个请求中设置吗? - Sushant Srivastava

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接