AngularJS-Authentifizierung + RESTful-API
Dies wurde in einigen verschiedenen Fragen und in einigen verschiedenen Tutorials behandelt, aber all die vorherigen Ressourcen, auf die ich gestoßen bin, treffen den Nagel nicht ganz auf den Kopf.
In einer Nussschale muss ichEinloggen über POST vonhttp://client.foo
zuhttp://api.foo/login
Haben Sie eine "angemeldet" GUI / Komponentenstatus für den Benutzer, der einelogout
RouteSie können die Benutzeroberfläche "aktualisieren", wenn sich der Benutzer abmeldet / abmeldet.Das war am frustrierendstenSchützen Sie meine Routen, um den Authentifizierungsstatus zu überprüfen (falls erforderlich) und leiten Sie den Benutzer entsprechend auf die Anmeldeseite umMeine Probleme sindJedes Mal, wenn ich zu einer anderen Seite navigiere, muss ich den Anruf tätigenapi.foo/status
um festzustellen, ob ein Benutzer angemeldet ist oder nicht. (ATM Ich verwende Express für Routen) Dies verursacht einen Schluckauf, da Angular Dinge wie bestimmtng-show="user.is_authenticated"
Wenn ich mich erfolgreich an- / abgemeldet habe, muss ich die Seite aktualisieren (ich möchte dies nicht tun), um Dinge wie zu füllen{{user.first_name}}
Wenn Sie sich abmelden, leeren Sie diesen Wert.// Sample response from `/status` if successful
{
customer: {...},
is_authenticated: true,
authentication_timeout: 1376959033,
...
}
Was ich versucht habehttp://witoldsz.github.io/angular-http-auth/1http://www.frederiknakstad.com/authentication-in-single-page-applications-with-angular-js/2https://github.com/mgonto/restangular (Für mein Leben konnte ich nicht herausfinden, wiePOST
mitpost data
und nichtquery params
. Die Unterlagen zeigten nichts in der Sache.Warum ich das Gefühl habe, den Verstand zu verlierenEs scheint, als ob sich jedes Tutorial auf eine Datenbanklösung stützt (viel Mongo, Couch, PHP + MySQL, ad infinitum), und keine stützt sich ausschließlich auf die Kommunikation mit einer RESTful-API, um den Anmeldestatus beizubehalten. Einmal eingeloggt, werden zusätzliche POSTs / GETs mit gesendetwithCredentials:true
Das ist also nicht das ProblemIch kann KEINE Beispiele / Tutorials / Repos finden, die Angular + REST + Auth ohne Backend-Sprache ausführen.Ich bin nicht zu stolzZugegeben, ich bin neu bei Angular und würde mich nicht wundern, wenn ich mich auf lächerliche Weise dem nähere. Ich würde mich freuen, wenn jemand eine Alternative vorschlägt - auch wenn es Suppe-zu-Nuss ist.
Ich benutzeExpress
vor allem, weil ich wirklich liebeJade
undStylus
- Ich bin nicht mit dem verheiratetExpress
Routing und werde es aufgeben, wenn das, was ich tun möchte, nur mit Angulars Routing möglich ist.
Vielen Dank im Voraus für jede Hilfe, die jemand leisten kann. Und bitte frag mich nicht bei Google, da ich ungefähr 26 Seiten lila Links habe. ;-)
1Diese Lösung basiert auf Angulars $ httpBackend-Mock, und es ist unklar, wie sie mit einem echten Server kommunizieren kann.
2Dies war die naheliegendste, aber da ich eine vorhandene API habe, mit der ich mich authentifizieren muss, konnte ich Passports 'localStrategy' nicht verwenden, und es schienwahnsinnig einen OAUTH-Dienst schreiben ... den nur ich verwenden wollte.