1

是否可以通知用户会话已过期?浏览器可以充当服务器并接收此类通知吗?

一种解决方案是生成在客户端进行倒计时并最终通知客户端的 JavaScript,但我是否可以通过第一种方式进行发布?

第一种方法的后果是什么?有任何安全问题吗?

例如,django 中的可行实现是什么?

4

4 回答 4

1

您可以让 JavaScript 定期轮询服务器以获取通知(例如每 30 秒),XMLHTTPRequest用于检查 URL。如果会话超时,服务器可以在那个 URL 上放一些东西来表明它,然后会弹出一个通知。如果您正在撰写答案,这就是 Stackoverflow 实现其他人已经回答问题的通知的方式。

于 2009-04-29T23:00:36.567 回答
0

您可能希望查看comet,尽管我认为 javascript 计时器将是一个更好的解决方案,它不太可能中断,并且更容易实现。

我想不出任何安全隐患,因为您只是提供过期通知,实际上并未在该步骤中进行任何身份验证。

于 2009-04-29T22:59:13.217 回答
0

你正在寻找某种彗星类型的东西。您可以做的最简单的“服务器推送”可能是轮询服务器。

于 2009-04-29T22:59:54.353 回答
0

事实上,在 Django 中,如果您使用文件系统或数据库引擎,则没有服务器端过期 => 是您的客户端 cookie 会话 ID 过期。否则,如果您使用基于缓存的会话,则可以将缓存过期设置为大于会话 cookie 过期的值。

然后,只需声明一个没有过期的 cookie 以在登录时标记客户端浏览器,并在每个页面中检查会话 id:如果没有会话 id cookie 但您的“cookie 标记”,则会话已过期。无需检查服务器。

于 2009-04-30T07:49:32.503 回答