Я борюсь с проблемой, касающейся того, как мой код должен знать, какие данные являются аутентифицированным пользователем или как я могу их получить.
Я завершил свой процесс аутентификации, что означает, что я могу успешноЗарегистрируйтесь и войдите с токеном. Я все еще вошел в систему с обновлением страницы, мой токен все еще хранится в ionic / storage.
Я думаю, что этого на самом деле должно быть достаточно, чтобы получить конкретные пользовательские данные / разрешения для аутентифицированных данныхПользователь. Но я не знаю, как это сделать.
Когда я выбираю любого пользователя из списка и смотрю его профиль, я просто могу передать его идентификатор. Как я могу получить идентификатор аутентифицированного пользователя, просто нажав на вкладку профиля?
Я не захожу с другой страницы, откуда я мог бы взять идентификатор. Я также поместил свой код auth.service, если это поможет вам, чтобы помочь мне из-за токена, но важны два последних фрагмента (я так думаю).
Это мой код:
auth.service.ts
private token = null;
user = null;
authenticationState = new BehaviorSubject(false);
constructor(private http: HttpClient, private alertCtrl: AlertController, private storage: Storage, private helper: JwtHelperService,
private plt: Platform) {
this.plt.ready().then(() => {
this.checkToken();
});
}
checkToken() {
this.storage.get(TOKEN_KEY).then(access => {
if (access) {
this.user = this.helper.decodeToken(access);
this.authenticationState.next(true);
}
});
}
apilogin(username: string, password: string) {
return this.http.post<any>(`${this.url}/api/token/`, { username, password })
.pipe(
tap(res => {
this.storage.set(TOKEN_KEY, res['access']);
this.storage.set(USERNAME_KEY, username);
this.user = this.helper.decodeToken(res['access']);
console.log('my user: ', this.user);
this.authenticationState.next(true);
}),
catchError(e => {
this.showAlert('Oops smth went wrong!');
throw new Error(e);
}));
}
user.service.ts
// get a user's profile
getUserDetails(id: number): Observable<any> {
return this.http.get(`${this.url}/users/${id}/`);
}
profile.ts
information = null;
id: number;
ngOnInit() {
// How to get just the authenticated api?
this.activatedRoute.paramMap.subscribe(params => {
this.id = validateId(params.get('id'));
});
function validateId(id: any): number {
return parseInt(id);
}
// Get the information from the API
this.userService.getUserDetails(this.id).subscribe(result => {
this.information = result;
});
}