1
각도 2 라우터 canActivate 가드에서 사용자가 인증되었는지 확인하고 싶습니다. 사실 인증 확인은 비동기 적이 지 않습니다. 단지 if this.user
입니다. 그러나이 검사 (한 번만, 사용자가 웹 사이트를 열 때) 전에 응용 프로그램은 http.get()을 사용하는 서버에서 사용자의 데이터를 가져와야합니다. 그래서 Observable<boolean>
개체를 서버에서받은 경우에만 if this.user
을 검사 할 개체를 반환하고 싶습니다.사용자가 router canActivate에서 인증을 받았는지 비동기로 확인하려면 어떻게해야합니까?
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { User } from '../user';
@Injectable()
export class AuthService {
private initPromise: Promise<boolean>;
private user: User;
constructor() {
this.initPromise = new Promise(function(resolve, reject) {
receiveUserFromServer(function(userData) {
if (!userData) return resolve(null);
let user = new User();
user.id = userData.id;
user.name = userData.name;
resolve(user);
});
});
}
isLoggedIn() {
// I don't know how to return Observable<boolean> here
// true, if user from receiveUserFromServer is exists
// but receiveUserFromServer should execute only once
}
}