2017-10-18 3 views
1

Angular2のCanActivateインターフェイスは、ルート変更にのみ有効です。私はページを持っているのであれば、私にログインするユーザーを必要とPRouterModuleはユーザーがログインしている場合にのみ、PをアクティブにすることができますCanActivateインターフェイスを実装ガードを作成することができます。Angular2トリガページがアクティブな間にCanActivateする

しかし、 pがアクティブで、ユーザーがログアウトするとどうなりますか?私は、ページがRouterModuleのルートを変更せずにアクティブであることが許可されているかどうかをチェックするためのベストプラクティスを見つけようとしましたが、役に立たないものは何も見つかりませんでした。ページpがアクティブで、ログインが必要です。これで、pがアクティブなのに何らかの経路変更が関与していない間に、ログアウトが何とか開始されます。サーバーが401で応答したとすると、ユーザーはもうログインしていないことがアプリに通知されます。アクティブなページにログインが必要かどうかをチェックし、それに応じて対策を講じるのがベストプラクティスでしょうか?アクティブなページにログインする必要はありません。その場合、すべてがそのまま残るべきです。

答えて

1

あなたは、以下のような

何か、ログアウトトリガーで

{ 
    path: ..., 
    component: ..., 
    canActivate: [CanActivateGuard], 
    data: { authRequired: true } 
} 

、あなたは認証がそのルートやないために必要であるかどうかを確認するために後で使用することができた、あなたのルートでdataを追加することができます

、あなたがページにログインするかどうかをユーザーに送信するかどうかを判断するために活性化路線データをチェックする ActivatedRouteを注入することができます
constructor(route: ActivatedRoute) {} 
... 
someCallBack(){ 
    if(!!this.route.snapshot.data 
    && this.route.snapshot.data.authRequired == true){ 

    // redirect to login page 

    } 
} 

これはほしいと思う!!

関連する問題