La canLoad Guard empêche le chargement du module Loaded Lazy. Nous utilisons généralement cette garde lorsque nous ne voulons pas à un utilisateur non autorisé de naviguer vers l'une des routes du module et également de s'arrêter puis même de voir le code source du module.
L'Angular fournit canActivate Guard, qui empêche les utilisateurs non autorisés d'accéder à l'itinéraire. Mais cela n'empêche pas le téléchargement du module. L'utilisateur peut utiliser la console de développement Chrome pour voir le code source. CanLoad Guard empêche le téléchargement du module.
En fait, CanLoad protège un module à charger, mais une fois le module chargé, CanLoad guard ne fera rien. Supposons que nous ayons protégé un chargement de module à l'aide de CanLoad guard pour un utilisateur non authentifié. Lorsque l'utilisateur est connecté, ce module sera applicable pour être chargé et nous pourrons naviguer dans les chemins enfants configurés par ce module. Mais lorsque l'utilisateur est déconnecté, l'utilisateur pourra toujours naviguer dans ces chemins enfants car le module est déjà chargé. Dans ce cas, si nous voulons protéger les chemins enfants des utilisateurs non autorisés, nous devons également utiliser la garde CanActivate .
Utilisez CanLoad avant de charger AdminModule:
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [ AuthGuardService ]
},
Après avoir chargé AdminModule, dans le module AdminRouting, nous pouvons utiliser CanActive pour protéger les enfants contre les utilisateurs non autorisés comme ci-dessous:
{
path: '',
component: AdminComponent,
children: [
{
path: 'person-list',
component: PersonListComponent,
canActivate: [ AuthGuardService ]
}
]
}
canActivate
dans le scénario ci-dessus, quelle sera la différence?