CanLoad Straż uniemożliwia ładowanie Lazy Loaded Module. Zwykle używamy tego strażnika, gdy nie chcemy, aby nieautoryzowany użytkownik nawigował do żadnej z tras modułu, a także zatrzymał się, a nawet zobaczył kod źródłowy modułu.
Angular zapewnia canActivate Guard, który uniemożliwia nieautoryzowanemu dostęp do trasy. Nie przeszkadza to jednak w pobieraniu modułu. Użytkownik może użyć konsoli programisty chrome, aby zobaczyć kod źródłowy. CanLoad Guard zapobiega pobieraniu modułu.
W rzeczywistości CanLoad chroni moduł do załadowania, ale po załadowaniu modułu ochrona CanLoad nic nie zrobi. Załóżmy, że zabezpieczyliśmy ładowanie modułu za pomocą ochrony CanLoad dla nieuwierzytelnionego użytkownika. Gdy użytkownik jest zalogowany, moduł będzie można załadować i będziemy mogli nawigować po ścieżkach podrzędnych skonfigurowanych przez ten moduł. Ale gdy użytkownik jest wylogowany, nadal będzie mógł nawigować po ścieżkach podrzędnych, ponieważ moduł jest już załadowany. W takim przypadku, jeśli chcemy zabezpieczyć ścieżki podrzędne przed nieautoryzowanymi użytkownikami, musimy również użyć osłony CanActivate .
Użyj CanLoad przed załadowaniem modułu AdminModule:
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [ AuthGuardService ]
},
Po załadowaniu AdminModule, w module AdminRouting możemy użyć CanActive do ochrony dzieci przed nieautoryzowanymi użytkownikami, jak poniżej:
{
path: '',
component: AdminComponent,
children: [
{
path: 'person-list',
component: PersonListComponent,
canActivate: [ AuthGuardService ]
}
]
}
canActivate
w powyższym scenariuszu, jaka będzie różnica?