j查询注销功能

jquery logout function

本文关键字:功能 注销 查询      更新时间:2023-09-26

我在卸载之前使用以下代码注销用户。 我有 3 级身份验证,在第二级身份验证页面中我注入了此代码。如果用户是 2 因素身份验证用户,用户将停止在我注入代码的页面,如果用户关闭浏览器,用户将被注销/会话将被终止。但是,如果用户通过 2 级身份验证,我会看到弹出窗口,因为您已注销并且用户能够登录。我需要的是:在关闭事件中,只有弹出窗口必须出现。

我使用了window.onbeforeunload,window.onunload和所有其他选项,它不适用于某些浏览器。请指教。

var timeoutID;
$(window).bind("beforeunload", function(){    
    logout();
    timeoutID = window.setTimeout(displayMessage(),500);
});
function logout() {
    window.location.href = "logout url";
}
function displayMessage(){
    window.alert( "You are loggedout" );
}
timeoutID = window.setTimeout(displayMessage(),500);

应该是:

timeoutID = window.setTimeout(displayMessage,500);

setTimeout的第一个参数必须是函数。您正在调用函数,而不是传递函数本身。这就是弹出警报的原因。

但是,由于对在 beforeunload 处理程序中可以执行的操作的限制,这仍然有效。这只是为了向您展示创建超时函数的正确语法。

在卸载处理程序之前不能执行的两件事是:

  1. 将用户重定向到其他页面(浏览器不允许)。
  2. 设置一个将在将来某个时间运行的计时器(页面已经关闭,因此没有将来的时间)。

因此,您尝试在 beforeunload 处理程序中执行的操作都不起作用。 (仅供参考,卸载前还有其他限制,例如您不能使用prompt()alert()等......但这是您正在执行的两个限制)。

您没有说明如何跟踪登录/注销,因此我们很难确切地知道该建议什么。 会话 Cookie 将在浏览器关闭时自动过期。 常规 cookie 可以在卸载前处理程序中轻松清除。