Метод в authService, который отправляет запрос на внутренний сервер и получает ответ как json с токеном доступа
refresh() {
if (JSON.parse(localStorage.getItem('auth')) !== null && JSON.parse(localStorage.getItem('auth')) !== undefined) {
const body = ...
let headers = ...
return this.http.post(this.authUrl, body.toString(), {
headers
});
}
}
Метод, который выше работает правильно
В компоненте navbar есть кнопка:
<button mat-menu-item (click)="addTrip()" *ngIf="isLogged()">
<mat-icon>add</mat-icon>
<span>add Trip</span>
</button>
, который должен быть видимым только в том случае, если токен существует в localStorage и если этот токен не истек
Метод isLogged не работает должным образом.Вызовите подписку this.auth.refresh.subscribe (..... вернуть true или false? ...) невозможно, так как подписка является несинхронизированным методом.Как сначала получить токен, а после вернуть логическое значение?
isLogged() {
if (JSON.parse(localStorage.getItem('auth')) !== null && JSON.parse(localStorage.getItem('auth')) !== undefined) {
this.auth.refresh();
} else {
return false;
}
}