Angular JS + Benutzerauthentifizierung + Seite aktualisieren
Also das ist mein problem.
Kann ich erfolgreich login von meinem angularJS app mit dem auth-Fabrik, ich habe das kommuniziert, um meine pp-rest-API.
können sagen, Auth.login(Benutzer) -> (POST) myapi.com/user/login: die Antwort ist das user-Objekt, dass die "Auth" speichert lokal. So Auth.getCurrentUser() gibt den lokalen Benutzer-Objekt.
meine rest-API, ich habe auch ein myapi.com/user/get_loggedin_user die gibt den aktuell angemeldete Benutzer (unter Verwendung der php-session). Also, wenn Auth.getCurrentUser sollte eigentlich prüfen, ob lokale Benutzer vorhanden ist, wenn nicht ein ajax myapi.com/user/get_loggedin_user und prüfen, ob eingeloggt, bevor Sie reagieren mit null. Ein problem hierbei ist, ajax ist ärgerlich, wie diese, würden Sie dann brauchen, um in einer Erfolgs-callback-Funktion und haben alle Ihren code ausführen im Erfolgs-callback.
Jetzt können sagen, dass ich auf der Angular-App (website), mydomain.com/user/dashboard (bereits angemeldet), und dann habe ich meinen browser aktualisieren. Nun, wenn die Seite neu geladen, eckig weiß nicht, meinen aktuellen Benutzer, so dass, bevor es leitet mich zu meinedomain/login, ich will es überprüfen, ob der Benutzer angemeldet ist. kann ich natürlich tun, eine 1-mal-Aufruf innerhalb der controller, aber gibt es einen einfachen Weg, wo kann ich mich anmelden in einem controller, mit einigen Zugriffsbeschränkungen (Z.B.: logged_in == true), und wenn Sie besuchen jede Seite protokolliert Anforderung, prüft es, lokale Benutzer (bekommt der user, wenn nicht vorhanden), und leitet zu einer login-Seite, wenn der Wert null ist, oder zeigen Sie die Seite einmal entspricht es den Anforderungen?
Verschiedenen gemeinsamen Seite Anforderungen: null, logged_in, admin, Funktion: usermight haveaccess(Benutzer-Objekt).
HINWEIS: im mit stateProvider
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich deine Frage verstanden richtig, Sie zu Fragen, wie man überprüfen, ob der Benutzer angemeldet ist vor der controller aufgerufen wird, und zu vermeiden, die überprüfung für einen eingeloggten status in jedem controller, die es braucht.
Wenn dem so ist, sollten Sie schauen in die
resolve
parameter - diese besteht sowohl in $routerProvider und $stateProvide.Im Grunde könnte man "beheben" Ihre loggedInUser variable (indem Sie tun, was Sie tun müssen, um über Ihre
MyAuth
service.Hier ist ein Beispiel was ich meine mit $routeProvider:
Dann im controller
loggedInUser
wird gespritzt.Hier ein Website mit mehr Beispielen.
Korrigieren Sie mich, wenn im falschen:
Dazu in der Main-Controller (stellen Sie sicher, dass Sie injizieren der Abhängigkeiten wie rootScope, Staat, und Ihre eigenen Authfactory)
Setzen logged_in = true cookieStore in Ihrem login-Methode, nach der Authentifizierung wie unten beschrieben.
und in Ihrem Controller, tun
Jetzt können Sie diese variable logged_in überall in der UI zu überprüfen, ob der Benutzer angemeldet ist.
Stellen Sie sicher, dass Sie 'ngCookies' - Modul in Ihrer app. und übergeben die $cookieStore Abhängigkeit zu Ihrer Steuerung. Sie können sogar das user-Objekt selbst ähnlich logged_in Variablen in cookies und abrufen von cookies.
Stellen Sie sicher, logged_in = false und deaktivieren Sie andere Variablen in cookies, und legen Sie es um die leere in Ihrem logout-Methode.