通知客户端有关过期的会话 - 网络编程

时间:2009-04-29 22:50:31

标签: django web-applications session browser client-server

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

一个解决方案是生成在客户端进行倒计时的JavaScript并最终通知客户端,但如果第一种方式可以做到这一点,我会感到厌烦吗?

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

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

4 个答案:

答案 0 :(得分:1)

您可以让JavaScript定期轮询服务器以获取通知(比如每30秒),使用XMLHTTPRequest检查URL。如果会话超时,服务器可以在该URL上放置一些指示它的内容,然后可以弹出通知。这就是Stackoverflow如何在你撰写答案的过程中实现其他人已回答问题的通知。

答案 1 :(得分:0)

你可能希望看看comet,虽然我认为javascript计时器是一个更好的解决方案,不太可能破坏,更容易实现。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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