2017-11-04 3 views
0

サーバノードでJWTを使用して、ユーザが接続しているかどうかを確認します。観測可能で AuthGuard私のユーザーが接続されている場合、それがチェックされます:AuthGuardからブール値を返す - 角度4

canActivate(): Observable<any> { 
    if (!localStorage.getItem('currentUser')){ 
     return Observable.of(false); 
    } 
    // Authorization with JWT Token 
    const options = { 
     headers: new HttpHeaders().set('Authorization', 'BEARER ' + localStorage.getItem('currentUser')) 
    }; 
    //Check if the JWT Token is always available and if the signature is right 
    return this.http.get(environment.api + 'checkToken', options) 
     .map(() => true).catch(() => { 
     return Observable.of(false); 
     }); 
    } 

を今、私は、他のコンポーネントにcanActivateからブール値を放出したいと思います。私の他のコンポーネントは私のウェブサイトのnav-barです。ユーザーが切断されたときに、ナビゲーションバーのリンクを非表示にしたいしかし、私はユーザーが接続されているときにいくつかの要素を表示したいと思います。

しかし、私のnavbarコンポーネントのコンストラクタでobservableを使用しても、ユーザーが接続されているかどうかは1回だけチェックされます。

AuthGuardからNavbarコンポーネントにブール値を出力する方法はありますか?

あなたは

答えて

0

あなたはルート上resolveを使用して、リゾルバクラスにほぼ同じことを行うことができますありがとうございました。次に、ActivatedRouteSnapshotを注入して、コンポーネントからブール値(またはそれを解決する場合はユーザーオブジェクト自体)にアクセスできます。
往復を望まない場合は、canActivateから返信する前に観測可能なものを購読することができます。例えば、Subjectを含むサービスに値を送信すると、このサービスをコンポーネントに注入して使用することができますその主題。