嗨,在 angular 12 之前我使用 this.userService.getUser(this.authService.decodedToken.nameid) 但在 angular 12 中我的令牌没有被解码我能做什么
我有 user.service.ts 文件(
updateUser(id: number, user: User) {
return this.http.put(this.baseUrl + 'users/' + id, user);
}
) 并在我的个人资料 userEdit.component.ts
@Injectable()
export class MemberEditResolver implements Resolve<User> {
constructor(
private userService: UserService,
private router: Router,
private alertify: AlertifyService,
private authService: AuthService
) {}
resolve(route: ActivatedRouteSnapshot): Observable<User | any> {
return this.userService.getUser(this.authService.decodedToken.nameid).pipe(
catchError(error => {
this.alertify.error('Problem retrieving your data');
this.router.navigate(['/home']);
return of(null);
})
);
}
}
在我的解析器中
@Injectable()
export class MemberEditResolver implements Resolve<User> {
constructor(
private userService: UserService,
private router: Router,
private alertify: AlertifyService,
private authService: AuthService
) {}
resolve(route: ActivatedRouteSnapshot): Observable<User | any> {
return this.userService.getUser(this.authService.decodedToken.nameid).pipe(
catchError(error => {
this.alertify.error('Problem retrieving your data');
this.router.navigate(['/home']);
return of(null);
})
);
}
}
我还在我的角度路线中添加了我的解析器
{path: 'startup-edit', component: StartupEditComponent,resolve: {user: MemberEditResolver}},
这是我的身份验证服务
login(model: any) {
return this.http.post(this.baseUrl + 'login', model).pipe(
map((response: any) => {
const user = response;
if (user) {
localStorage.setItem('token', user.token);
localStorage.setItem('user', JSON.stringify(user.user));
this.decodedToken = this.jwtHelper.decodeToken(user.token);
this.currentUser = user.user;
// this.userid = this.decodedToken.userid;
this.changeMemberPhoto(this.currentUser.photoUrl);
}
})
);
}
register(user: User) {
return this.http.post(this.baseUrl + 'register', user);
}
loggedIn() {
const token = localStorage.getItem('token');
return !this.jwtHelper.isTokenExpired(token!);
}