我用
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();
});
}
我也使用canActivate
Routes
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;
}
但是当我尝试禁用浏览器缓存或刷新浏览器缓存时,它已更改
有办法解决这个问题,所以我不需要刷新浏览器缓存吗?
谢谢
答案 0 :(得分:0)
你在使用铬吗?如果是这样,他们只是针对导致您问题的错误修正了问题:https://bugs.chromium.org/p/chromium/issues/detail?id=765524
所以我们遇到了我们的Chrome版本问题,为了克服它我们必须做的事情
localStorage.setItem('currentUser', '');
localStorage.removeItem('currentUser');
如果我们这样做,那就有效了。如果我们没有,只是使用removeItem
它会清除,但在刷新它会回来。