El CanLoad Guardia evita que la carga del módulo cargado perezoso. Generalmente usamos esta protección cuando no queremos que un usuario no autorizado navegue a alguna de las rutas del módulo y también se detenga y luego incluso vea el código fuente del módulo.
El Angular proporciona canActivate Guard, que evita que usuarios no autorizados accedan a la ruta. Pero no impide que se descargue el módulo. El usuario puede utilizar la consola de desarrollo de Chrome para ver el código fuente. CanLoad Guard evita que se descargue el módulo.
En realidad, CanLoad protege la carga de un módulo, pero una vez que se carga el módulo, CanLoad guard no hará nada. Supongamos que hemos protegido la carga de un módulo utilizando CanLoad guard para usuarios no autenticados. Cuando el usuario inicie sesión, ese módulo será aplicable para ser cargado y podremos navegar por las rutas secundarias configuradas por ese módulo. Pero cuando el usuario cierra la sesión, aún el usuario podrá navegar por esas rutas secundarias porque el módulo ya está cargado. En este caso, si queremos proteger las rutas de los niños de los usuarios no autorizados, también necesitamos utilizar CanActivate guard.
Utilice CanLoad antes de cargar AdminModule:
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [ AuthGuardService ]
},
Después de cargar AdminModule, en el módulo AdminRouting podemos usar CanActive para proteger a los niños de usuarios no autorizados como a continuación:
{
path: '',
component: AdminComponent,
children: [
{
path: 'person-list',
component: PersonListComponent,
canActivate: [ AuthGuardService ]
}
]
}
canActivateen el escenario anterior, ¿cuál será la diferencia?