Jeg endte med at kombinere min originale arbejdsgang med Express's godkendelseseksempel, set her . Det er som følger:
- Når brugeren først indlæser appen, foretages et http-kald til et Express-slutpunkt, der kontrollerer, om der allerede eksisterer en session for brugeren. Hvis ja, er brugeren gemt i
$rootScope
og anses for at være logget ind. - Hver gang AngularJS-ruten ændres, tilgås det samme slutpunkt. Rutebeskyttelse blev specificeret på en måde svarende til den, der er beskrevet her
. Hvis slutpunktet nogensinde returnerer, at der ikke eksisterer en session,
$rootScope.user
er deaktiveret (hvis det er nødvendigt), og brugeren omdirigeres til login-siden. - Når loginformularen behandles, sendes den til et Express-slutpunkt. Slutpunktet henter brugeren fra mongoDB'en (hvis den findes) og forsøger at hash kodeordet. Hvis det er et match, indstilles brugerens session, gemmes i mongo DB, og slutpunktet returnerer
user
objekt (bruges til at gemme i $rootScope som tidligere nævnt). - Hver gang der er adgang til yderligere endepunkter, sendes funktionerne først gennem
restrict
funktion, som sikrer, at der eksisterer en session, før data sendes til klienten. Det returnerer en401
hvis der ikke eksisterer en session, som så håndteres på Angular-siden ved hjælp af denne HTTP-interceptor for at frakoble$rootScope.user
og omdirigere til login-skærmen. - Når brugeren klikker på "log ud" på vinkelsiden, bliver sessionen deaktiveret og slettet fra mongo DB,
$rootScope.user
er sat til null, og brugeren omdirigeres tilbage til forsiden.