0

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

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

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

4

1 に答える 1

3

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

angular.io ルーターのドキュメントのこの部分を確認してください: https://angular.io/docs/ts/latest/guide/router.html#!#guards

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

于 2016-08-27T21:47:03.467 に答える