AuthRouterOutletDirective
を拡張したを作成することでログイン/認証が処理された既存の Angular2 アプリがありますRouterOutlet
。componentInstruction
これにより、アクティブ化機能でユーザーがログインしているかどうかを確認するのが簡単になりました.次のコンポーネントに移動する前に、Angular2 アプリに保存するトークンを送り返します。
ルーター 3.0.0-alpha.8 にアップグレードしたところ、これはもはやオプションではなく、authGuard を作成し、canActivate
認証を処理する方法を使用することで置き換えられていることがわかりました (私は、ドキュメント)。私が苦労している問題は、これは少数のルートのみが保護されているアプリ向けに設計されているように思わcanActivate: [AuthGuard]
れ、RouterConfig で認証を必要とする各ルートに追加するだけでよいことです。
私が抱えている問題は、すべてのルートを認証によって保護する必要があることです。また、(より良い修正がない限り)継続的なチェックも必要です。これは、(使用する必要がある外部ログイン サービスが原因の 1 つです)ユーザーをログアウトしてトークンをクリアし、次回新しいルート (ルートが何であるかに関係なく) は、再度ログインするようにリダイレクトする必要があります。すべてのルートに追加できることは理解していcanActivate: [AuthGuard]
ますが、それは非常識で退屈な修正のように思えます。特に、大量のルートを持つアプリでは、そのすべてを表示するにはユーザーの認証が必要です。
私は修正を探していましたが、おそらくアップグレードがかなり新しいため、これらの AuthGuard を 1 つまたは 2 つのルートに実装するためのリソースがすべてあるようです。ソース コード (特にhere ) を掘り下げて、すべてのルートに特定のガードを含めるよりも包括的またはより普遍的な方法で拡張できる別の方法があるかどうかを確認しましcanActivate
たが、何も見つからないようです。これを実装するための最善の方法についてのアドバイスをいただければ幸いです。ありがとう。