Ich entwickle eine Anwendung, für die ich einen Benutzerbereich und einen Admin-Bereich habe. Ich habe diese in separate Angular 2 Module aufgeteilt. Ich habe erfolgreich Lazy-Loading implementiert, so dass das Admin-Modul nur geladen werden kann, wenn '/ admin' vom Benutzer angefordert wird.Lazy-Loaded-Module sicher schützen (Angular 2)
aus dem Winkel 2-Dokumentation, wie ich sehe, dass ich wie so eine "canload" guard angeben:
canLoad(route: Route): boolean {
return this.authService.isAdmin();
}
: wie so eine Funktion canload innerhalb einer AdminGuard Klasse
{
path: 'admin',
loadChildren: 'app/admin/admin.module#AdminModule',
canLoad: [AdminGuard]
}
und implementieren (wobei isAdmin() einen Aufruf an die Back-End-API senden könnte, die die Rolle des aktuellen Benutzers oder etwas Ähnliches zurückgibt)
Aber verhindert dies tatsächlich, dass admin vom Laden des AdminModules? Wenn ich nicht falsch verstanden habe, befindet sich der gesamte Code auf dem Client. Gibt es also irgendetwas, das den Client daran hindert, die "canLoad" -Methode so zu ändern, dass sie immer wahr zurückgibt? Wie so:
canLoad(route: Route): boolean {
return true;
}
So dem Kunden erlauben, irgendein Modul zu laden, das sie wollen.
Offensichtlich werden alle Aufrufe an die Backend-API, die den Admin-Status erfordern, geschützt, aber es scheint, als ob jeder Benutzer die Admin-Benutzeroberfläche sehen kann, was mir einfach etwas komisch vorkommt. Kann jemand das für mich klären?
Dies ist nicht wirklich eine Antwort auf die Frage. Es verbindet sich jedoch mit einer guten Unterhaltung. Bis jetzt haben die Informationen, die ich zu diesem Thema gefunden habe, keinen klaren Grund gefunden, diese Funktion zu nutzen oder zu lösen. Ich habe diese Frage vor ein paar Minuten gestellt: https://stackoverflow.com/questions/47613907/ – BBaysinger