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
$rootScopea 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.usernení 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í
userobjekt (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
restrictfunkce, která zajišťuje existenci relace před odesláním jakýchkoli dat klientovi. Vrací401pokud neexistuje žádná relace, která se pak zpracuje na straně Angular pomocí tohoto zachycovače HTTP zrušte nastavení$rootScope.usera 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.userje nastaveno na null a uživatel je přesměrován zpět na úvodní stránku.