2017-12-05 2 views
1

Ich bin neu in Angular und Authentifizierung für Benutzer implementieren.Angular 2 (4/5) überprüfen, ob Benutzer authentifiziert, Best Practices

Die meisten Vorschläge im Web schlagen vor, Sitzung/Benutzername im lokalen Speicher zu speichern, und wenn der Benutzer zurück zur App ist, überprüfen Sie den lokalen Speicher, um korrekte Navigation anzuzeigen (in meiner Navigationsleiste habe ich verschiedene Nav-Schaltflächen für private und öffentliche Ansichten).

Allerdings fand ich diese Lösung mit einigen Nachteilen. Wenn zum Beispiel die Sitzung auf dem Server abgelaufen ist oder der lokale Speicher manuell hinzugefügt wurde, zeigt die App bei der Initialisierung falsche Schaltflächen in der Navigationsleiste an.

Danach kam ich zur Lösung - um Service vor dem Anzeigen von Navbar-Schaltflächen zu verwenden, um eine Anfrage an den Server zu senden, um zu überprüfen, ob der Benutzer aus dem lokalen Speicher mit seiner Sitzung derzeit aktiv ist. Und erst danach werde ich Nav-Tasten anzeigen.

Hier kommt eine Frage: ist es die effizienteste Möglichkeit, um zu überprüfen, ob Benutzer aus dem lokalen Speicher angemeldet ist und Sitzung aktiv ist?

Es gibt einen anderen Weg, den ich dachte, aber keine Lösung gefunden. Da sich meine eckige webapp und nodejs server an zwei verschiedenen Orten befinden, ist es möglich, dass die Webanwendung den Authentifizierungsstatus überprüft (eine Anfrage vom webapp Server an meinen nodejs Server), wenn index.html angefordert wird und mit vorgerenderter navbar antwortet und Benutzerstatus (eingeloggt oder nicht)?

Danke.

P.S. Ich verwende PassportJS und Express auf der Serverseite.

+0

Sie können die JWT-Authentifizierung verwenden, hier ist das Synchronisieren von Localstorage und Serversitzung nicht erforderlich. https://blog.angular-university.io/angular-jwt-authentication/ –

Antwort

0

Die beste Vorgehensweise besteht darin, AuthGuard zu verwenden und CanActivate zu implementieren, um zu überprüfen, ob Benutzer einen bestimmten Teil der Anwendung anzeigen können. Außerdem wird normalerweise ein Authentifizierungsdienst verwendet, um den Benutzer sich beim System anzumelden und ein Zugriffstoken zu erhalten.

Dieses Zugriffstoken wird dann als Authorisation-Header bei jeder Anfrage an den Server verwendet (dort werden sie synchronisiert).

Sie müssen auf JWT/or any other type Token auf Laden überprüfen, die Benutzerinformationen plus Sitzungszeitüberschreitung enthält.

Wenn das Token ungültig ist, leiten Sie den Benutzer einfach zur Anmeldung um, sonst kann der Benutzer dorthin gehen, wo er möchte.

Ein praktisches Beispiel kann here gefunden werden.