是否可以通知用户会话已过期?浏览器可以充当服务器并接收此类通知吗?
一种解决方案是生成在客户端进行倒计时并最终通知客户端的 JavaScript,但我是否可以通过第一种方式进行发布?
第一种方法的后果是什么?有任何安全问题吗?
例如,django 中的可行实现是什么?
是否可以通知用户会话已过期?浏览器可以充当服务器并接收此类通知吗?
一种解决方案是生成在客户端进行倒计时并最终通知客户端的 JavaScript,但我是否可以通过第一种方式进行发布?
第一种方法的后果是什么?有任何安全问题吗?
例如,django 中的可行实现是什么?
您可以让 JavaScript 定期轮询服务器以获取通知(例如每 30 秒),XMLHTTPRequest
用于检查 URL。如果会话超时,服务器可以在那个 URL 上放一些东西来表明它,然后会弹出一个通知。如果您正在撰写答案,这就是 Stackoverflow 实现其他人已经回答问题的通知的方式。
您可能希望查看comet,尽管我认为 javascript 计时器将是一个更好的解决方案,它不太可能中断,并且更容易实现。
我想不出任何安全隐患,因为您只是提供过期通知,实际上并未在该步骤中进行任何身份验证。
你正在寻找某种彗星类型的东西。您可以做的最简单的“服务器推送”可能是轮询服务器。
事实上,在 Django 中,如果您使用文件系统或数据库引擎,则没有服务器端过期 => 是您的客户端 cookie 会话 ID 过期。否则,如果您使用基于缓存的会话,则可以将缓存过期设置为大于会话 cookie 过期的值。
然后,只需声明一个没有过期的 cookie 以在登录时标记客户端浏览器,并在每个页面中检查会话 id:如果没有会话 id cookie 但您的“cookie 标记”,则会话已过期。无需检查服务器。