Ich habe eine angular 2-Anwendung, in der ich auf jeder Seite authentifiziert werden muss. Also habe ich ein benutzerdefiniertes RouterOutlet implementiert, um zu bestätigen, dass ich bei jedem Seitenwechsel angemeldet bin.
%Vor%Hier ist ein Arbeitscode: Ссылка
Gibt es eine bessere Möglichkeit, Routenänderungen abzufangen und zur Anmeldung umzuleiten, wenn der Benutzer nicht authentifiziert ist?
Für jeden, der das findet, ist die Antwort in Angular 2 nun, "Guards" als Teil des neuen Routers zu verwenden. Siehe Dokumentation zu Angular 2:
Ein einfacher Wächter implementiert "CanActivate" und könnte wie folgt arbeiten:
%Vor%Wie Sie in diesem Beispiel sehen können, habe ich einen AuthService, der irgendwo anders ausgeführt wird (die Implementierung ist nicht wichtig), der dem Wächter mitteilen kann, ob der Benutzer authentifiziert wurde. Wenn sie haben, kehren Sie zurück und die Navigation geschieht wie gewohnt. Wenn nicht, geben wir false zurück und leiten sie zum Anmeldebildschirm um.
Hier ist ein aktuelles Beispiel für die Verwendung eines AuthGuard mit Angular 2 RC6.
Routen mit der von AuthGuard geschützten Home Route
%Vor%AuthGuard leitet zur Anmeldeseite um, wenn der Benutzer nicht angemeldet ist
%Vor%Das vollständige Beispiel und die funktionierende Demo können Sie lesen dieser Beitrag
Sie können auch CanActivate
verwenden, direkte DI jedoch nicht unterstützt im Moment. Hier ist eine schöne Abhilfe tho.
Viel Glück.
Tags und Links angularjs angular angular2-routing