中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

js關閉瀏覽器時退出賬號怎么處理

發布時間:2021-12-03 16:26:45 來源:億速云 閱讀:243 作者:iii 欄目:開發技術

這篇文章主要講解了“js關閉瀏覽器時退出賬號怎么處理”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“js關閉瀏覽器時退出賬號怎么處理”吧!

經典做法

眾所周知,為了賬戶安全,用戶未主動點擊注銷系統時,直接關閉瀏覽器或標簽頁強制退出系統的方法:

// 關閉時調用注銷接口
window.onbeforeunload = function() {
 //執行注銷ajax調用,簡單示例
 $.ajax({url:"/logout"});
};

問題

此方式有嚴重問題, 會造成刷新頁面時也被調用注銷, 很多系統必須支持刷新頁面保持會話,如何處理?

沒有辦法的解決方案, 但有效:

// 關閉時調用注銷接口
window.onbeforeunload = function() {
 //執行注銷ajax調用, 傳入標志, 告訴后臺延時注銷
 $.ajax({url:"/logout"},data:{delay:true});
};

后臺注銷接口根據delay標志, 設置定時器,進行延時注銷, 比如設置5秒定時器,5秒后,才真正注銷應用系統會話。

同時,前端頁面加載后,要立刻調用一個清除注銷的接口, 告訴后臺刪除延時注銷定時器,確保刷新頁面時放棄之前的注銷操作,以保持應用會話。

進一步問題

后臺定時器設置多少延時可靠? 當然希望越短越好, 因為可以確保用戶關閉瀏覽器后, 重新打開頁面,不至于重新保持會話, 例如后臺設置5秒定時器, 用戶關閉瀏覽器, 重新打開頁面之間間隔只要大于5秒, 則會話將不會恢復, 確保重新進入登陸頁面。 當然,如果用戶手速過高,5秒內重新打開頁面,則會成功進入上一個會話, 當然這不會造成嚴重問題, 因為惡意用戶不可能非常快的使用用戶離開的電腦并打開頁面。

然后呢? 到底設置多少秒延時為好? 這取決于 前端代碼加載頁面時調用清除延時注銷定時器的時機, 關鍵點是,越早越好。
如何越早呢? 當然是 需要把此調用放在主頁的盡可能提前的代碼中,比如:

<html manifest="">
 <head>
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta charset="UTF-8">
  <meta http-equiv="Pragma" content="no-cache">
  <meta http-equiv="Cache-Control" content="no-cache">
  <meta http-equiv="Expires" content="0">
  
  <script type="text/javascript">
   //為了盡快調用清除延時注銷定時器, 使用原始XMLHttpRequest方式進行調用
   var xhr = new XMLHttpRequest();
   if (xhr) {
    xhr.open("POST", '/clearlogout', true);
    xhr.send();
   }
  </script>

  ......

經過上述處理, 一般正常的網絡情況下, 刷新頁面操作可確保 調用延時注銷 和 清除延時注銷之間的時間間隔很短, 一般來說, 5秒是較為合理的延時值。
使用此機制的使用可根據偏好, 比如希望更安全,還是希望更確保刷新體驗, 來決定延長還是縮短延時調用定時器。

需要注意問題

顯然,上述機制必須依賴后端雙層會話機制,因為前提是必須首先支持刷新頁面會話保持, 所以 表層是web框架本身的session, 內層是應用層會話。 表層會話依賴cookie,內層應用會話依賴后臺緩存機制或者數據庫

感謝各位的閱讀,以上就是“js關閉瀏覽器時退出賬號怎么處理”的內容了,經過本文的學習后,相信大家對js關閉瀏覽器時退出賬號怎么處理這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

五华县| 正宁县| 阿勒泰市| 武邑县| 林甸县| 霍州市| 隆化县| 门头沟区| 曲水县| 桃源县| 武邑县| 黄梅县| 大同县| 内乡县| 和田县| 金门县| 安顺市| 阜康市| 松江区| 长葛市| 阳东县| 华池县| 当雄县| 大竹县| 湟中县| 泸水县| 田阳县| 南乐县| 长沙县| 淮滨县| 阜宁县| 汝阳县| 辽宁省| 策勒县| 阳西县| 安庆市| 阿拉善左旗| 治多县| 福清市| 沙湾县| 吉林市|