【发布时间】:2015-06-11 03:27:55
【问题描述】:
现在我正在使用会话存储在登录时存储用户信息。正如预期的那样,会话变量即使在页面刷新后仍然存在。当您按预期关闭窗口并重新登录时,会话存储变量不再存在。但是,如果用户使用 CTRL + F5 刷新,清除缓存,会话存储变量确实会保留,但它们会清空。
这对我来说很糟糕,原因只有一个:我的会话变量之一是布尔值,它重置为 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;
}
}
我一直在寻找一种在检测到按键组合时将布尔值设置为 false 的方法,但这听起来是一个非常肮脏的解决方案。
编辑:我唯一想到的另一件事就是简单地对 Angular 中的变量进行每次检查,所以我检查的是假而不是真,但这 - 再一次 - 听起来像一个肮脏的解决方案。
【问题讨论】: