Javascript 当会话结束时,当用户打开多个选项卡时,如何处理注销用户的问题?
我们希望在会话结束时注销用户,因此一种方法是让JavaScript在会话结束后将用户重定向到注销脚本。但是,如果用户打开了多个选项卡,JavaScript可以在不可见的选项卡上激活并注销用户。我们无法执行AJAX调用,因为这会重置会话时间长度。当会话结束时,当用户打开多个选项卡时,如何处理注销用户的问题Javascript 当会话结束时,当用户打开多个选项卡时,如何处理注销用户的问题?,javascript,session,Javascript,Session,我们希望在会话结束时注销用户,因此一种方法是让JavaScript在会话结束后将用户重定向到注销脚本。但是,如果用户打开了多个选项卡,JavaScript可以在不可见的选项卡上激活并注销用户。我们无法执行AJAX调用,因为这会重置会话时间长度。当会话结束时,当用户打开多个选项卡时,如何处理注销用户的问题 编辑:会话在一段时间后在服务器上过期。JavaScript只是将用户重定向到注销页面,这样内容就不会留在屏幕上。使会话cookie过期。Cookie可以设置为在浏览器关闭时或某段时间后过期。请参
编辑:会话在一段时间后在服务器上过期。JavaScript只是将用户重定向到注销页面,这样内容就不会留在屏幕上。使会话cookie过期。Cookie可以设置为在浏览器关闭时或某段时间后过期。请参见为什么要依赖javascript来实现这一点?将他从服务器上注销,然后打开选项卡无关紧要。如果用户已登录,则必须轮询服务器。您可以通过AJAX或WebSockets实现。如果cookie过期,也许您可以自动重定向,但我不知道您是否可以根据JavaScript检查过期日期。我有一个MVC应用程序,成功登录后,我在我的Layout.cshtml中设置了登录存储值
$(document).ready(function () {
function loginStorageChange(event) {
if(window.localStorage.getItem('loginStorage') === null) {
setTimeout(function() { location.reload(); }, 1000);
}
}
window.localStorage.setItem('loginStorage', true);
window.addEventListener('storage', loginStorageChange, false);
});
在注销时单击,我将在表单提交之前删除登录存储
function logoutSubmit() {
window.localStorage.removeItem('loginStorage');
$('#logoutForm').submit();
}
所以,当窗口检测到loginstorage已更改,以便重新加载页面时,服务器将指示注销并重定向到登录页面。我刚刚编辑了这个问题。我们之所以使用javascript,是因为我们希望用户重定向到登录页面。这正是我所需要的。谢谢