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
});
}
}
上面正确运行的方法
在导航栏组件中具有按钮:
<button mat-menu-item (click)="addTrip()" *ngIf="isLogged()">
<mat-icon>add</mat-icon>
<span>add Trip</span>
</button>
仅当localStorage中存在令牌且此令牌未过期时,该令牌才可见
isLogged方法无法按需工作。不可能调用subscribe this.auth.refresh.subscribe(.....返回true或false吗?...),因为subscribe是不同步的方法。
isLogged() {
if (JSON.parse(localStorage.getItem('auth')) !== null && JSON.parse(localStorage.getItem('auth')) !== undefined) {
this.auth.refresh();
} else {
return false;
}
}