是否可以通知用户会话已过期?浏览器可以充当服务器并接收此类通知吗?
一个解决方案是生成在客户端进行倒计时的JavaScript并最终通知客户端,但如果第一种方式可以做到这一点,我会感到厌烦吗?
第一种方法的后果是什么?有安全问题吗?
例如,django中的实现是什么?
答案 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标志”,则会话已过期。无需检查服务器。