Pracuję nad aplikacją, dla której mam obszar użytkownika i obszar administracyjny. Rozdzieliłem je na osobne moduły Angular 2. Z powodzeniem zaimplementowałem leniwy-ładowanie, aby moduł administracyjny mógł być ładowany tylko wtedy, gdy użytkownik/admin jest żądany przez użytkownika.Bezpieczne zabezpieczenie modułów Lazy-Loaded (Angular 2)
Z Kątowymi dokumentacji 2, widzę, że mogę określić "canLoad" straż tak:
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [AdminGuard]
}
i zaimplementować funkcję canLoad wewnątrz klasy AdminGuard tak:
canLoad(route: Route): boolean {
return this.authService.isAdmin();
}
(gdzie isAdmin() może wywołać API zaplecza, który zwróciłby rolę bieżącego użytkownika lub coś podobnego)
Ale czy to faktycznie uniemożliwia jakiekolwiek admin z ładowania modułu AdminModule? O ile się nie mylę, cały ten kod znajduje się na kliencie, więc czy istnieje coś, co uniemożliwiłoby klientowi modyfikację metody "canLoad", aby zawsze zwracała wartość true? Podobnie jak:
canLoad(route: Route): boolean {
return true;
}
Tym samym umożliwiając klientowi załadowanie dowolnego modułu, który chce.
Oczywiście wszystkie połączenia z interfejsem API zaplecza, które wymagają statusu administratora, będą chronione, ale wygląda na to, że każdy użytkownik będzie mógł zobaczyć interfejs administratora, co wydaje mi się trochę dziwne. Czy ktoś może mi to wyjaśnić?
To nie jest odpowiedź na to pytanie. To jednak łączy się z dobrą rozmową. Jak dotąd informacje, które znalazłem na ten temat, nie wskazują na wyraźny powód posiadania tej funkcji ani jej rozwiązania. Wysłałem to pytanie kilka minut temu: https://stackoverflow.com/questions/47613907/ – BBaysinger