您无法保证在窗口关闭时用户将被注销,因为您正依赖页面正常关闭.如果浏览器硬崩溃Javascript将无法执行.
我建议实现JAX代码到AJAX调用窗口卸载的注销页面,这将在大多数时间工作.
对于其他情况,您应该降低会话超时限制.
取决于你想要的严格程度.
如果您需要" 即时 "注销,那么最简单的方法是使用AJAX来ping您的服务器每个让我们说30秒 - 1分钟以保持会话活着.这会导致很多开销并增加服务器的负载,但这是立即解决某人问题的唯一可靠方法.
同样的原则适用于更长的时期.比方说30分钟吧.您可以执行本主题中所述的操作,并在30分钟后将某人记录下来,或者每隔10-15分钟再次使用AJAX 对服务器执行ping操作,并在用户在页面上时保持会话处于活动状态.
它可能没有更多.
就像@thatidiotguy所说,你可以实现窗口卸载事件来处理用户出口,但是你必须非常小心 - 如果用户有2个浏览器窗口打开怎么办?如果他同时查看2页,你不会忘记他.