Das CanLoad Guard verhindert das Laden des Lazy Loaded Module. Wir verwenden diesen Schutz im Allgemeinen, wenn wir nicht möchten, dass nicht autorisierte Benutzer zu einer der Routen des Moduls navigieren und auch anhalten und dann sogar den Quellcode des Moduls sehen.
Der Angular bietet canActivate Guard, das verhindert, dass nicht autorisierte Benutzer auf die Route zugreifen. Das Herunterladen des Moduls wird jedoch nicht verhindert. Der Benutzer kann die Chrome-Entwicklerkonsole verwenden, um den Quellcode anzuzeigen. Der CanLoad Guard verhindert, dass das Modul heruntergeladen wird.
Tatsächlich schützt CanLoad ein zu ladendes Modul, aber sobald das Modul geladen ist, unternimmt CanLoad Guard nichts mehr. Angenommen, wir haben das Laden eines Moduls mit CanLoad Guard für nicht authentifizierte Benutzer geschützt . Wenn der Benutzer angemeldet ist, kann dieses Modul geladen werden, und wir können in den von diesem Modul konfigurierten untergeordneten Pfaden navigieren. Wenn der Benutzer abgemeldet ist, kann der Benutzer dennoch in diesen untergeordneten Pfaden navigieren, da das Modul bereits geladen ist. In diesem Fall müssen wir auch CanActivate Guard verwenden , um untergeordnete Pfade vor nicht autorisierten Benutzern zu schützen.
Verwenden Sie CanLoad, bevor Sie AdminModule laden:
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [ AuthGuardService ]
},
Nach dem Laden von AdminModule können wir im AdminRouting-Modul CanActive verwenden , um Kinder vor nicht autorisierten Benutzern wie unten zu schützen:
{
path: '',
component: AdminComponent,
children: [
{
path: 'person-list',
component: PersonListComponent,
canActivate: [ AuthGuardService ]
}
]
}
canActivateWas ist der Unterschied, wenn ich das obige Szenario verwende?