CanLoad Guardはレイジーロードされたモジュールのロードを防ぐことができます。通常、このガードは、権限のないユーザーがモジュールのルートに移動したり、停止してからモジュールのソースコードを表示したりしたくない場合に使用します。
AngularはcanActivateGuardを提供し、許可されていないユーザーがルートにアクセスするのを防ぎます。ただし、モジュールのダウンロードは停止しません。ユーザーはChromeデベロッパーコンソールを使用してソースコードを確認できます。CanLoad Guardは、モジュールがダウンロードされないようにします。
実際、CanLoadはロードされるモジュールを保護しますが、モジュールがロードされると、CanLoadガードは何もしません。認証されていないユーザーに対してCanLoadガードを使用してモジュールのロードを保護したとします。ユーザーがログインすると、そのモジュールがロード可能になり、そのモジュールによって構成された子パスをナビゲートできるようになります。ただし、ユーザーがログアウトしても、モジュールはすでにロードされているため、ユーザーはこれらの子パスをナビゲートできます。この場合、許可されていないユーザーから子パスを保護する場合は、CanActivateガードも使用する必要があります。
AdminModuleをロードする前にCanLoadを使用します。
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [ AuthGuardService ]
},
AdminModuleをロードした後、AdminRoutingモジュールで、CanActiveを使用して、次のような許可されていないユーザーから子供を保護できます。
{
path: '',
component: AdminComponent,
children: [
{
path: 'person-list',
component: PersonListComponent,
canActivate: [ AuthGuardService ]
}
]
}
canActivate上記のシナリオで使用した場合、違いは何ですか?