-2

Ich habe eine mobile website in angularjs geschrieben, mit meinem backend in Spring Boot. Im Moment habe ich meine eigene Login-Seite und kann mich ohne Probleme einloggen. Wenn der Benutzer jedoch jemals auf "Zurück", "Aktualisieren" usw. klickt, verliert der Client die ID des Benutzers und die Anmeldeinformationen (die er vom Server bei der Anmeldung erhält). Ich muss sicherstellen, dass diese Informationen beibehalten werden und das Klicken auf "Zurück" oder "Aktualisieren" bricht nicht alles ab. Zweitens kann ein Benutzer, der die URLs nach der Anmeldung kennt, diese URLs in den Browser eingeben und auf sie zugreifen, ohne sich anzumelden. Ich kann sie auf dem Server stoppen, aber nicht sicher, was ich auf dem Client tun kann sie auf eine Login-Seite in diesem Fall.angularjs client und spring backend benutzeranmeldung und sitzungsverwaltung

Jede Hilfe würde sehr geschätzt werden!

Antwort

0

Sie sollten daran denken, dass alles, was im Browser läuft, stateless ist, es gibt keine Möglichkeit, den vorherigen Zustand zu verfolgen.

Im Moment, wenn der Benutzer eine Aktualisierung (oder eine andere ähnliche Aktion) durchführt, verliert Angular alles (AuthData enthalten).

Sie viele Art und Weise haben um diese Grenze zu umgehen:

  1. Führen Sie eine HTTP-Anfrage nach der Anwendung Bootstrap (haben einen Blick auf die angular.module().run Methode
  2. Speichern eines Cookies und verwenden Sie den Server-Ausgangsdaten drucken direkt am dom über json Schicht
  3. Speicher auf lokalen/session Speicher

ich persönlich Cookies bevorzugen, weil das den Server Decou arbeiten kann plädiert vom Kunden.

+0

Für Cookies, gibt es irgendwelche Probleme, ob der Browser Cookies erlaubt? Und wenn ja, wie könnte ich sie überwinden? –

+0

Wenn der Browser (dh der Benutzer) keine Cookies zulässt, können Sie keinen Cookie verwenden ... zeigen Sie einfach immer das Login-Formular an. – Hitmands

0

In Bezug auf Ihren Kommentar ... "wenn der Benutzer jemals" zurück "," aktualisieren "usw. klickt, verliert der Client die ID des Benutzers und Login-Informationen (vom Server bei der Anmeldung erhalten).

Gibt es einen Grund, warum Sie die Benutzer-ID oder Anmeldeinformationen nach einer erfolgreichen Authentifizierung pflegen müssen?

Wenn Spring Security für die Basisauthentifizierung eingerichtet ist, wird nach einer erfolgreichen Anmeldung ein Sitzungscookie an die Antwort an den Client gesendet. Bei allen nachfolgenden Anfragen an den Server wird dasselbe Sitzungs-Cookie für die Anfrage gesendet und die zuvor authentifizierte Sitzung wird wiederhergestellt. Sie müssen nur sicherstellen, dass Ihr Angular-Client Cookies weitergibt, wenn Sie Anfragen stellen.

Werfen Sie einen Blick auf diese sample wie das gemacht wird.

+0

Ja, ich muss ihre Benutzer-ID beibehalten, da sie eine Kennung ist, die für nachfolgende Anfragen an den Server verwendet wird (dies ist eine Chat-App). –