0

私はAngular2で私のWebアプリケーションのために少し問題に直面してるのページにリダイレクトします。 しかし、私はどのように彼がいる場所にこのプロセスを作るルートにユーザーをリダイレクトするのか分からない。Angular2:ユーザーがアクセス権を持っている場合、私はチェックします。..</p> <p>各アプリケーションの起動、アプリケーションの起動

アイデア?

ありがとうございます!

答えて

1

2つの一般的な方法があります

  • 使用CanActivate
  • そうでない場合は、ログインルート

にリダイレクトカスタムユーザが認証されるかどうかをチェックRouterOutlet

を使用他を見る
- Check if the user logged in on any page change in Angular 2
- http://www.captaincodeman.com/2016/03/31/angular2-route-security/

+0

角度がリダイレクトを簡単に処理しないようです...アプリケーションの最初のページを強制するための多くの努力... 私はこれら2つの方法を試してみましょう、ありがとう! – Gen

+1

も参照してください。http://www.captaincodeman.com/2016/03/31/angular2-route-security/ –

0

あなたはOnInitインタフェースを実装し、リダイレクトを追加/ ngOnInit方法でチェックして、自分の子コンポーネントに@CanActivateを追加することができます。

class Static{ 
    static authenticated:boolean = false; 
    static initialized:boolean = false; 
} 

@CanActivate(()=>{ 
    if(Static.authenticated && Static.initialized){ 
     return true; 
    } 
    return false; 
}) 

protected ngOnInit():any 
{ 
    this.loginFacade.refresh().subscribe(event=> 
    { 
     var url = event.success ? this.location.path() : Routes.LOGIN; 

     Static.authenticated = event.success; 

     this.router.recognize(url).then(()=> 
     { 
      return Promise.resolve(url); 
     }, (e)=> 
     { 
      return Promise.resolve(Routes.LOGIN); 
     }).then((url)=> 
     { 
      Static.initialized = true; 
      return this.router.navigateByUrl(url); 
     }); 
    }); 
} 

もデフォルトルートを削除します。

+0

OnInitが呼び出されましたが、私のメインクラスでルータを使用することはできません。プロパティの '未定義のコンストラクタ'です。お返事ありがとうございました – Gen

+0

申し訳ありませんが、あなたの意見は私には分かりません。 – kemsky

+0

Bootstrapによって呼び出された私のクラスのアプリケーションであなたのソリューションを試しました。そして、私たちはこのクラスでリダイレクトを行うことができないようです – Gen

関連する問題