Überprüfen Sie, ob der angemeldete Benutzer jede Seite ändern, im Winkel 2
Langsam aber sicher voran mit Angular2. Und nun Stand ich vor der folgenden Herausforderung. Ich möchte überprüfen, ob der Benutzer eingeloggt ist oder nicht auf jeder Seite ändern (in anderen Worten, die auf Last der jede und jeder Komponente). Natürlich kann ich implementieren OnInit-Schnittstelle, die in jedem und jeder von Ihnen, aber das ist der code, den Geruch.
Ist es eine effiziente Art der Ausführung alles, was benötigt, auf jeder Seite der app? Ich würde gerne hören, andere Vorschläge zu best practices, wie Sie diese Aufgabe zu bewältigen.
Ich bin mit dieser Bibliothek (https://auth0.com/blog/2015/11/10/introducing-angular2-jwt-a-library-for-angular2-authentication/) für jwt-basierten Verbindung und ich habe auch schon ein netter service, Klasse kapselt alle Authentifizierungs-Funktionalität. So, die eigentliche Kontrolle, wo der Benutzer angemeldet ist, wird schon gemacht und getestet.
Dank,
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie routing (und es scheint der Fall zu sein, da Sie sagen: "auf jeder Seite ändern"), können Sie nutzen mehrere Dinge:
Erstellen Sie einen benutzerdefinierten router-Steckdose (eine sub-Klasse von
RouterOutlet
), überprüft die Authentifizierung mit seineractivate
- Methode aufgerufen wird. In diesem Fall, können Sie etwas haben, global. Sowas:Sehen, diese Frage für mehr details:
Nutzen Sie die
CanActivate
Dekorateur, um zu überprüfen, ist eine Komponente aktiviert werden kann oder nicht. In Ihrem Fall auszuführen, können Sie die Authentifizierung überprüfen auf dieser Ebene.Etwas könnte auch an der RouterLink Ebene ein - /ausblenden route links. In diesem Fall können Sie anwenden, Rollen Sie auf diesen Link, basierend auf der zugehörigen route-Konfiguration und den aktuellen Benutzer-Hinweise. Sehen Sie, diese Frage für mehr details:
Diese können auch gehandelt werden, innerhalb einer HTTP-interceptor (eine Klasse, die erweitert die
Http
eine). In diesem Fall, wenn eine Anfrage ausgeführt wird, können Sie einige plug-Authentifizierung prüft:Sehen, diese Frage für mehr details:
Ich denke, die Verlängerung RouterOutlet ist ein üblicher Weg, dies zu erreichen
Beispiel gepostet vor einer Weile im Gitter durch CaptainCodeman (selber noch nicht getestet)
Zeige ich Ihnen eine einfache Umsetzung mit Angular2. Nutzen Sie @CanActivate Haken, wie gezeigt, Schlag zu überprüfen, ob der Benutzer loggedIn oder nicht mit isLoggedIn Funktion gibt Versprechen.
HINWEIS: unter Umsetzung ist zu prüfen, ob Benutzer ist
loggedIn
vor dem Zugriff auf eine beliebige Komponente oder nicht. Ich hoffe, dass durch einige änderungen kann man das erreichen, was Sie haben wollen.Auth.ts
isLoggedIn.ts
appInjector.ts
somecomponent.ts
boot.ts
Gibt es zwei Möglichkeiten, den Zugang zu beschränken
Custom Router Outlet
undCanActivate Decorator
gezeigt und umgesetzt, die in diesem tollen Artikel Authentifizierung im Winkel 2Dies ist, was ich Tat, verwendet canActive-Eigenschaft in der app.routing.ts
Folgen Sie bitte den nachfolgenden 5 Minuten video-tutorial
https://www.youtube.com/watch?v=0Qsg8fyKwO4
Hinweis: Diese Lösung funktioniert gut für Eckige 4