2016-08-27 9 views
0

私は経路を認証されたユーザーだけが利用できるように制限しようとしています。これまでは、すべてのルートコンポーネントコンストラクタにサービスコールを追加して、ユーザーがログに記録されているかどうかを確認しました。そうでない場合は、ログインルート(インデックス)にリダイレクトされます。AngularFire 2で角度2の経路制限を行う認証

logCheck(){ 
    this.af.auth.subscribe(user => { 
    if(!user){ 
     this.router.navigate(['']); 
    } 
}); 

これは機能します。しかし、実際にはコンポーネントをロードしてから追い出されるため、各ルートコンポーネントのコンストラクタを使用することが正しい方法かどうかはわかりません。 より良い方法がありますか?おそらくapp.routesで追加のparamsを使うのと同じようにconst?

答えて

3

Guardと同じロジックを使用しますが、代わりにルータで使用することで、誰かがルートにアクセスしようとしたときにサービスブール値がtrueに設定されていない場合、リダイレクトされます。

チェックアウトangular.ioルータのドキュメントのこの部分:https://angular.io/docs/ts/latest/guide/router.html#!#guards

あり、それを行う方法の例ですが、あなたはすでにやっていることと、それはかなり高速である必要があります。

+0

ガードを使用して動作する解決策を見つけましたか?もしそうなら、答えを検証することを忘れないでください。ありがとう –