MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Architektur für Anmeldesystem auf MEAN-Stack?

Am Ende habe ich meinen ursprünglichen Workflow mit dem Authentifizierungsbeispiel von Express kombiniert, siehe hier . Es ist wie folgt:

  • Wenn der Benutzer die App zum ersten Mal lädt, erfolgt ein HTTP-Aufruf an einen Express-Endpunkt, der prüft, ob bereits eine Sitzung für den Benutzer besteht. Wenn ja, wird der Benutzer in $rootScope gespeichert und gilt als eingeloggt.
  • Jedes Mal, wenn sich die AngularJS-Route ändert, wird auf denselben Endpunkt zugegriffen. Der Routenschutz wurde ähnlich wie unter hier . Wenn der Endpunkt jemals zurückgibt, dass keine Sitzung vorhanden ist, $rootScope.user ist nicht gesetzt (wenn es sein muss) und der Benutzer wird auf die Anmeldeseite umgeleitet.
  • Wenn das Anmeldeformular verarbeitet wird, wird es an einen Express-Endpunkt gesendet. Der Endpunkt ruft den Benutzer aus der mongoDB ab (falls vorhanden) und versucht, das Passwort zu hashen. Wenn es eine Übereinstimmung gibt, wird die Sitzung des Benutzers festgelegt, in der Mongo-DB gespeichert und der Endpunkt gibt den user zurück -Objekt (wird wie zuvor erwähnt zum Speichern im $rootScope verwendet).
  • Jedes Mal, wenn auf weitere Endpunkte zugegriffen wird, werden die Funktionen zuerst durch den restrict geleitet Funktion, die sicherstellt, dass eine Sitzung besteht, bevor Daten an den Client gesendet werden. Es gibt ein 401 zurück wenn keine Sitzung existiert, was dann auf der Angular-Seite unter Verwendung von diesem HTTP-Interceptor behandelt wird um $rootScope.user zu deaktivieren und zum Anmeldebildschirm weiterleiten.
  • Wenn der Benutzer auf der Angular-Seite auf „Abmelden“ klickt, wird die Sitzung deaktiviert und aus der Mongo-DB, $rootScope.user, gelöscht wird auf null gesetzt und der Benutzer wird zurück zur Startseite geleitet.