Il CanLoad Guard impedisce il caricamento del modulo Lazy Loaded. Generalmente usiamo questa guardia quando non vogliamo che un utente non autorizzato navighi verso uno qualsiasi dei percorsi del modulo e fermi anche quindi vedere il codice sorgente del modulo.
Angular fornisce canActivate Guard, che impedisce a utenti non autorizzati di accedere al percorso. Ma non impedisce il download del modulo. L'utente può utilizzare la console per sviluppatori Chrome per vedere il codice sorgente. CanLoad Guard impedisce il download del modulo.
In realtà, CanLoad protegge un modulo da caricare, ma una volta caricato il modulo, CanLoad guard non farà nulla. Supponiamo di aver protetto il caricamento di un modulo utilizzando CanLoad guard per utenti non autenticati. Quando l'utente ha effettuato l'accesso, quel modulo sarà applicabile per essere caricato e saremo in grado di navigare nei percorsi figli configurati da quel modulo. Ma quando l'utente è disconnesso, sarà comunque in grado di navigare in quei percorsi figli perché il modulo è già caricato. In questo caso, se vogliamo proteggere i percorsi dei bambini da utenti non autorizzati, dobbiamo anche utilizzare CanActivate guard.
Usa CanLoad prima di caricare AdminModule:
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [ AuthGuardService ]
},
Dopo aver caricato AdminModule, nel modulo AdminRouting possiamo usare CanActive per proteggere i bambini da utenti non autorizzati come di seguito:
{
path: '',
component: AdminComponent,
children: [
{
path: 'person-list',
component: PersonListComponent,
canActivate: [ AuthGuardService ]
}
]
}
canActivate
nello scenario precedente, quale sarà la differenza?