用户关闭选项卡时注销

时间:2016-03-29 11:58:53

标签: javascript jquery

在我的Django网站上,我想在关闭标签页或浏览器时自动从网站注销。我的意思是当我通过关闭选项卡而不是使用注销按钮关闭网站时,再次输入URL后,我想看到用户已经从网站注销以强制用户再次输入用户名和密码。

有没有办法处理关闭JQuery中的选项卡?

提前谢谢。

编辑:onunload& onbeforeunload事件导致在重新加载页面时注销用户。

3 个答案:

答案 0 :(得分:0)

您可以使用Javascript onunload& onbeforeunload个事件。在这些事件中,销毁Django的会话cookie。

当您通过链接或浏览器返回按钮离开网站时,也会触发这些事件,所以请小心,如果这真的是您想要的话,请三思而后行。

答案 1 :(得分:0)

将您的注销代码添加到on onunload事件中。

window.onunload = function () {
    //logout code here...
}

在JQuery中,您可以使用.unload()函数。请记住,您没有太多时间,因此您可能会发送Ajax请求,但结果可能无法到达客户端。

另一个技巧是打开一个小的新窗口并处理那里的注销。

window.open("logout url","log out","height=10,width=10,location=no,menubar=no,status=no,titlebar=no,toolbar=no",true);

如果要禁用关闭窗口(或至少警告用户),可以使用以下代码:

window.onbeforeunload = function(event) {
    //if you return anything but null, it will warn the user.
    //optionally you can return a string which most browsers show to the user as the warning message.
    return true;
}

另一个技巧是每隔几秒钟对客户端进行一次ping操作。如果没有回复,则假设用户已关闭窗口,浏览器已崩溃或网络问题无论如何都已结束聊天会话。在客户端,如果您没有收到此ping包,则可以假设网络连接或服务器出现问题,您可以显示注销警告(并可选择让用户再次登录)。

答案 2 :(得分:0)

我刚遇到这个。在Django settings.py文件中,您可以添加标志:

  

SESSION_EXPIRE_AT_BROWSER_CLOSE =真

这将在关闭浏览器时注销用户。 请注意,如果还有其他标签页或窗口仍处于打开状态,用户将保持登录状态(浏览器必须完全关闭)。