【发布时间】:2017-10-23 01:56:18
【问题描述】:
我用
localStorage.setItem('currentUser')
保存我当前的用户数据,例如令牌等
当用户注销时,我使用localStorage.removeItem('currentUser') 删除我的用户数据,但是当我在注销后立即以其他用户身份登录时,我的 localStorage 仍然保留最后一个用户而不是当前用户
下面是我设置 localStorage 的代码
return this.http.post(environment.api_host + '/login', params.toString(), options)
.map((response: Response) => {
const user = response.json().returnBody;
if (user && user.token) {
localStorage.setItem('currentUser', JSON.stringify(user));
}
});
这是注销
localStorage.removeItem('currentUser');
更新
下面是我检查当前用户令牌状态的代码(我把它放在我的 NotificationService 上,在所有页面中都调用它)
if (error.json().error === 'token_expired') {
swal('Session expired', 'Please login again !', 'error').then(() => {
this._authService.logout();
window.location.reload();
});
}
我也使用来自Routes的canActivate
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
if (localStorage.getItem('currentUser')) {
// logged in so return true
return true;
}
// not logged in so redirect to login page with the return url
this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }});
return false;
}
但是当我尝试禁用浏览器缓存或刷新浏览器缓存时,它发生了变化
有没有办法处理这个,所以我不需要刷新我的浏览器缓存?
谢谢
【问题讨论】:
-
你应该使用 sessionStorage
-
@Sajeetharan 嗨,sessionStorage 是如何工作的?它是否也在浏览器缓存中存储数据?
-
@Sandy,您能否提供一个您最初设置这些值的代码示例?
-
@HuseinRoncevic 嗨,我已经添加了设置代码并删除了
标签: angular local-storage browser-cache angular-local-storage