Différence entre Angulaire du canLoad et canActivate?
Quelle est la différence entre canLoad
et canActivate
?
export interface Route {
path?: string;
pathMatch?: string;
matcher?: UrlMatcher;
component?: Type<any>;
redirectTo?: string;
outlet?: string;
canActivate?: any[];
canActivateChild?: any[];
canDeactivate?: any[];
canLoad?: any[];
data?: Data;
resolve?: ResolveData;
children?: Routes;
loadChildren?: LoadChildren;
}
Quand je devrais dont l'un d'eux?
OriginalL'auteur Yoav Schniederman | 2017-02-03
Vous devez vous connecter pour publier un commentaire.
canActivate est utilisé pour empêcher les utilisateurs non autorisés d'accéder à certaines routes. Voir les docs pour plus d'info.
canLoad est utilisé pour empêcher l'application de chargement des modules entiers paresseusement si l'utilisateur n'est pas autorisé à le faire.
Voir les docs et l'exemple ci-dessous pour plus d'info.
Avec ce code, le code de la AdminModule ne seront chargés dans l'application si AuthGuard retourne
true
.Si l'utilisateur n'est pas autorisé à accéder à cette voie, et nous avions utilisé un
canActivate
de la garde, leAdminModule
serait chargé, même si l'utilisateur ne sera pas en mesure d'accéder à l'itinéraire.canActivate
dans le scénario ci-dessus, quelle sera la différence ?avec
canActive
module sera chargé (F12 > Sources - dans chrome). Vous pouvez voir .js fichiers.AveccanLoad
ces modules (fichiers .js) ne sera pas chargé 🙂 Vérifier ma réponse ci-dessus où je vous l'ai expliqué mieuxQuel est le scénario où l'Administrateur connecté, donc, l'administrateur module est chargé par
canLoad
retourne true et puis se déconnecte de l'application. Maintenant, un non-admin utilisateur se connecte dans le même navigateur, comment ça fonctionne? Le module chargé suis expulsé ou supprimés du cache?OriginalL'auteur Fredrik Lundin
Quant à la question de commentaires dans d'autres post
"Si j'utilise canActivate dans le scénario ci-dessus, quelle sera la différence ?"
Fait pour l'utilisateur, il n'y aura pas de différence, il n'aura pas accès à la page dans les deux cas.
Bien qu'il n'y a un caché différence. Si vous appuyez sur la touche F12 et de passer à des Sources (Chrome) où sont les fichiers de téléchargement.
Ensuite, vous pouvez voir que dans le cas avec canActive fichier avec le code a été téléchargé (chunk.js). Même si vous n'avez pas accès à la page.
Mais dans ce cas avec canLoad il n'y aura pas chunk.js fichier avec le code source.
Donc, comme vous pouvez le voir, cette ont vraiment un grand impact pour la sécurité.
Et bien sûr, n'oubliez pas que canLoad peut être utilisé que pour LazyLoaded Modules.
OriginalL'auteur DiPix
canActivate est utilisé pour empêcher un utilisateur non autorisé
canLoad est utilisé pour éviter que l'ensemble de module d'application
Exemple de canActivate:
Exemple de canLoad:
OriginalL'auteur Sagar Jadhav