我發現很多Q & A關於如何在關閉選項卡或窗口時執行腳本或警報。但是,假設您進行身份驗證,並且想要將您的JWT保存在localStorage(LS)中。只要你的令牌還活着,你就會從LS中檢索它。關閉選項卡/窗口時保持/清除localStorage /會話的最佳方法
我希望當我關閉選項卡或窗口中顯式刪除我的令牌(按Ctrl + W¯¯或按Ctrl + F4或Alt鍵 + F4)
我來了
<script>
$(window).on('beforeunload', function(event){
window.localStorage.removeItem("myID");
});
</script>
:這個主意在我的網頁這樣的beforeunload定義腳本
但後來我意識到刷新F5 onbeforeunload將執行,我將清除LS。
於是我想出了這個解決方案
<script>
var clearLocalStorage = true;
$(window).on('keydown', function(event){
if(event.keyCode == 116 || //F5
(k == 16 && k == 17 && k == 82) || //Shift + Ctrl + R
(k == 17 && k == 82)){ //Ctrl + R
clearLocalStorage = false;
event.preventDefault();
}
});
$(window).on('beforeunload', function(event){
if(clearLocalStorage){
window.localStorage.removeItem("myID");
}
});
</script>
這與F5效果很好,因爲它並不清楚我的LS,但如果我做按Ctrl + [R,它會失去我的來自LS的令牌。
登錄我想繼續我的令牌上那麼LS之後....
在任何刷新意味着它應該始終保持從LS令牌即使進一步你按Ctrl +[R或移 + 按Ctrl +[R
點擊瀏覽器的URL地址並按輸入重新加載頁面。
僅當用戶關閉標籤或窗口時清除。如果您重新打開選項卡,則需要重新登錄頁面。
我已經想在上OnClose事件關閉該窗口,如下所示的時刻來控制LS,但我詢問的開發商工具的控制檯上的LS,我可以看到,它沒有工作令牌仍然存在。
<script>
window.onClose = function(){
window.localStorage.removeItem("myID");
}
</script>
我不知道什麼是管理的LS和令牌會話的最佳方法時,刷新和/或關閉標籤或窗口使用jQuery,智威湯遜,僅HTML和angularjs 1.5嗎?
在此先感謝。