私はユーザー領域と管理領域を持つアプリケーションを開発しています。私はこれを別々のAngular 2モジュールに分けました。私は、lazy-loadingをうまく実装しているので、/ adminがユーザによって要求されたときにのみ管理モジュールをロードすることができます。角度2のドキュメントから遅延ロードされたモジュールを安全に保護する(角2)
が、私はそうのように "canLoad" ガードを指定できることを参照してください。
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [AdminGuard]
}
などのようなAdminGuardクラス内の関数canLoadを実装:
canLoad(route: Route): boolean {
return this.authService.isAdmin();
}
(ここでisAdmin()はバックエンドAPIを呼び出して現在のユーザーの役割などを返すことができます)
これは実際には、管理者はAdminModuleを読み込みませんか?私が誤解していない限り、このコードはすべてクライアント上にあります。したがって、クライアントが「canLoad」メソッドを変更して常にtrueを返すことを防ぐ何かがありますか?同様に:
canLoad(route: Route): boolean {
return true;
}
こうすることで、クライアントは任意のモジュールをロードできます。
明らかに、管理ステータスを必要とするバックエンドAPIへの呼び出しはすべて保護されますが、ユーザーには管理UIが表示されるようです。ちょっと変わったようです。誰かが私のためにこれをクリアすることはできますか?
これは実際の質問に対する回答ではありません。それは良い会話にリンクします。これまで私がこのトピックで見つけた情報は、この機能を持つ明確な理由を特定したり、解決したりすることができません。私は数分前にこの質問を投稿しました:https://stackoverflow.com/questions/47613907/ – BBaysinger