在浏览器中重新打开最接近的选项卡时如何清除会话

时间:2018-08-15 15:51:03

标签: javascript

当我关闭浏览器的选项卡或窗口时,我可以使会话无效,但是当我单击以重新打开最近的选项卡时,它会按原样加载最近的页面。

如果单击重新打开,我想重定向到登录页面,我清除了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;

任何帮助将不胜感激

1 个答案:

答案 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=/";
  }