Ich erstelle eine AngularJS-Anwendung, die mit einer API interagiert, die Authentifizierungstoken zur Authentifizierung von Benutzern verwendet. Alles scheint gut zu funktionieren, aber ich kämpfe mit einer Möglichkeit, das Authentifizierungs-Token zwischen den Anfragen ordnungsgemäß zu speichern.Persistierendes Authentifizierungs-Token in AngularJS
Im Moment, wenn sich ein Benutzer mit korrekten Anmeldeinformationen anmeldet, wird authToken
zurückgegeben, und ich setze das auf $rootScope.authToken
. Ich sende auch dieses Auth-Token für zukünftige Anfragen, aber wenn ich ein Hard Reload neu lade, wird die Webseite mit F5 $rootScope
gelöscht und ich muss mich erneut authentifizieren.
Ich bin mir bewusst, dass ich den authToken in einem Cookie speichern kann, aber wäre das der sicherste Weg? Ist es besser, den lokalen Speicher zum Speichern des Tokens zu verwenden? Wenn lokaler Speicher verwendet wird, würde dies nicht gelöscht werden, wenn der Benutzer seinen Browser neu startet? Ich würde es am liebsten mögen, wenn der Login für ein paar Tage bestehen bleibt.
In diesem Fall wäre es akzeptabel, das Login-Token auf der Serverseite zu verschlüsseln, bevor es an den Benutzer gesendet wird, so dass sie die verschlüsselte Version speichern? Wenn das Token dann an den Server gesendet wird, wird es entschlüsselt und geprüft, um sicherzustellen, dass es gültig ist usw. Es ist kein Problem, alle Benutzersitzungen zu widerrufen, sie werden in einer Tabelle gespeichert und jede Clientanforderung wird mit ihnen abgeglichen. Wenn ich die Tabelle lösche, wird jeder ausgeloggt :) –
Ja, verschlüsseln Sie es serverseitig und überprüfen Sie es bei jeder API-Anfrage, die der Server empfängt. Das ist das Modell, das am sichersten als grundlegendes Sicherheitstor verwendet wird. Es gibt immer noch ein paar Probleme mit diesem Ansatz und ich würde empfehlen, zusätzlich zu Ihrem 'authToken'-Wert ein CSRF-Token zu setzen. AngularJS unterstützt dieses sekundäre Token nativ und dies wird Ihrer Anwendung eine weitere Barriere hinzufügen. Schauen Sie sich die Dokumente auf XSRF hier an: https://docs.angularjs.org/api/ng/service/$http –
Ehrfürchtig, danke. –