Nakonec jsem zkombinoval svůj původní pracovní postup s příkladem ověření Express, viz zde . Je to takto:
- Když uživatel nejprve načte aplikaci, provede se volání http do koncového bodu Express, které zkontroluje, zda již pro uživatele existuje relace. Pokud ano, uživatel je uložen v
$rootScope
a považován za přihlášeného. - Kdykoli se změní trasa AngularJS, přistupuje se ke stejnému koncovému bodu. Ochrana trasy byla specifikována způsobem podobným popsanému zde
. Pokud koncový bod někdy vrátí, že žádná relace neexistuje,
$rootScope.user
není nastaven (pokud je to nutné) a uživatel je přesměrován na přihlašovací stránku. - Když je přihlašovací formulář zpracován, odešle se do expresního koncového bodu. Koncový bod načte uživatele z mongoDB (pokud existuje) a pokusí se zahašovat heslo. Pokud se jedná o shodu, je nastavena relace uživatele, uložena v mongo DB a koncový bod vrátí
user
objekt (používá se k ukládání do $rootScope, jak bylo zmíněno výše). - Při každém přístupu k dalším koncovým bodům jsou funkce nejprve předány přes
restrict
funkce, která zajišťuje existenci relace před odesláním jakýchkoli dat klientovi. Vrací401
pokud neexistuje žádná relace, která se pak zpracuje na straně Angular pomocí tohoto zachycovače HTTP zrušte nastavení$rootScope.user
a přesměrovat na přihlašovací obrazovku. - Když uživatel klikne na "odhlásit" na straně Angular, relace se zruší a smaže se z mongo DB,
$rootScope.user
je nastaveno na null a uživatel je přesměrován zpět na úvodní stránku.