現在我正在使用會話存儲來存儲登錄時的用戶信息。如預期的那樣,甚至在頁面刷新後會話變量仍然存在。如預期的那樣關閉窗口並重新登錄後,會話存儲變量不再存在。但是,如果用戶使用CTRL + F5刷新,清除緩存,則會話存儲變量將保留,但它們會清空。AngularJS:sessionStorage變量在完全緩存清除時沒有被清除
這對我來說很糟糕,原因之一是:我的一個會話變量是一個布爾值,它重置爲true,而它肯定是false,除非它們已經登錄。解決方法是什麼?請在嘗試給我一個涉及sessionStorage以外的任何其他答案之前,請相信我不會選擇使用它。
.factory('Session',['$window', function ($window){
memorizeLogged : function(val) {
try {
if($window.Storage){
$window.sessionStorage.setItem('LoggedIn',
$window.JSON.stringify(val));
return true;
} else {
return false;
}
} catch(error){
console.error(error, error.message);
}
return false;
},
isLogged: function(){
try {
if($window.Storage){
return
$window.JSON.parse($window.sessionStorage.getItem('LoggedIn'));
} else {
return false;
}
} catch(error){
console.error(error, error.message);
}
return false;
}
}
我一直在尋找一種方式,當檢測到按鍵的組合來設置布爾爲假,但是這聽起來像一個非常骯髒的解決方案。
編輯:我唯一想到的其他事情就是簡單地對Angular中的變量進行每次檢查,因此我正在檢查false而不是true,但是 - 再次 - 聽起來像是一個骯髒的解決方案。
它們已初始化,只需使用空值。我認爲你的解決方案可能是唯一的。 – mitbanip
用你自己的語言,我認爲這不一定是一個乾淨的解決方案。 – skeletalbassman