【发布时间】:2019-11-20 19:19:59
【问题描述】:
我有一个登录组件、一个服务和一个存储助手。 登录方法工作正常,直到我刷新主页(这里我需要用户的数据),因为我正在注入一个空服务。 因此,为了解决这个问题,我在 app.component 中创建了一个方法,该方法使用保存到 localStorage 的令牌设置 currentUser。
我的问题是刷新页面后currentUser为null,我认为是因为没有保存令牌。
如何解决?
app.component.ts
getUserDetails() {
this.accountService.getUserDetails().subscribe(res => {
this.userService.setCurrentUser(<User>res);
}, error => {
StorageHelper.killSession();
});
}
login.service.ts
login(credentials) {
delete credentials.rememberMe;
return this.apiService.post(`${this.resourceUrl}/login`, credentials);
}
login.component.ts
login() {
this.accountService.login(this.authForm.value).subscribe(res => {
StorageHelper.saveToken((<User>res).token);
this.userService.setCurrentUser((<User>res));
this.router.navigateByUrl(this.getReturnUrl());
}, error => {
});
}
storagehelper.ts
private static readonly tokenKey: string = "VendorJwtToken";
private static readonly customerTypeKey: string = 'VN_CT';
public static getToken() {
return window.localStorage[this.tokenKey];
}
public static saveToken(token: String) {
window.localStorage[this.tokenKey] = token;
}
【问题讨论】:
-
尝试使用 setItem localStorage.setItem('user', token);并在重新加载前执行 console.log 检查以检查密钥是否设置正确。