当我关闭浏览器的选项卡或窗口时,我可以使会话无效,但是当我单击以重新打开最近的选项卡时,它会按原样加载最近的页面。
如果单击重新打开,我想重定向到登录页面,我清除了Cookie onUnbeforeUnload
,但不起作用。
这是我的代码:
`$(window).on("beforeunload", function(e) {
var aCookies=document.cookie.split('; ');
for (var i = 0; i < aCookies.length; i++) {
var cookie = aCookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + '=0; expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/';
}
window.location.href = "/safe-unsecured/logout";`
}
在页面加载后,我会清除cookie;
任何帮助将不胜感激
答案 0 :(得分:1)
浏览器在关闭页面或离开页面浏览时不会加载新页面。该注销页面将永远不会被请求。
此外,只要不重新启动浏览器,会话就将存在于浏览器中。关闭标签页不会使会话无效,而是关闭整个浏览器会使会话无效。真正实现所需目标的唯一方法是让Cookie存活一分钟,并运行计时器,该计时器每10秒更新一次cookie过期时间,这样只要打开页面或不打开选项卡就不会过期一分钟后重新打开。
这是更新代码的示例。您需要自己添加逻辑来检查cookie的存在以及验证所需的所有其他内容。
window.myCookieValueThatIReadBefore = 'Hello';
window.setInterval(function() {
setCookie('cookie_name', window.myCookieValueThatIReadBefore,1)
}, 1000*10);
function setCookie(cname, cvalue, exminutes) {
var d = new Date();
d.setTime(d.getTime() + (60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}