gpt4 book ai didi

c# - 同步 OWIN Cookie 过期(滑动)和 session 超时

转载 作者:行者123 更新时间:2023-11-30 12:22:37 26 4
gpt4 key购买 nike

背景

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

在每次服务器交互时,客户端上的计时器都会重置为 15 分钟。如果 14 分钟内没有记录任何事件,则会显示一个带有滚动条的模式,提醒用户 session 即将超时。

问题

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

根据 CookieAuthenticationOptions类:

The SlidingExpiration is set to true to instruct the middleware to re-issue a new cookie with a new expiration time any time it processes a request which is more than halfway through the expiration window.

我们有这样的场景,用户在“到期窗口过半”之前使用应用程序,然后让应用程序闲置几分钟。当用户看到 session 到期通知时,他们会尝试更新他们的 session 。但由于 OWIN cookie 从未更新,应用程序超时并将它们重定向到登录页面(过早地根据过期通知的内容)。

support article准确地说明了我们的情况:

Let us take an example: If the logon page is accessed at 5:00 00:00:00 PM, it should expire at 5:10 00:00:00 PM if the timeout attribute is 10 and the slidingExpiration attribute is set to TRUE. Now, if any Web page is browsed again at 5:05 00:00:00 PM, the cookies and ticket time-out period will be reset to 5:15 00:00:00 PM.

Note If the Web page is accessed before half of the expiration time passes, the ticket expiration time will not be reset. Fore example, if any Web page is accessed again at 5:04 00:00:00 PM, the cookies and ticket timeout period will not be reset.

问题/评论

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

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

感谢任何帮助。谢谢。

最佳答案

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

解决方法:

Only send keep-alive requests to the server until AFTER half of the OWIN cookie life passes. When the keep-alive is sent, the cookie will be renewed and this keeps the session and cookie timeout in sync.

关于c# - 同步 OWIN Cookie 过期(滑动)和 session 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40304394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com