Witam, po jakimś czasie nauki umiem już zaimplementować na serwerze autoryzacje z użyciem JWT oraz mechanizm sesji (używam express-session + Redis).
Używanie dla SPA tokenu przesyłanego jako response od serwera było dość proste. W zależności od obecności takiego tokenu wewnątrz globalnego stanu aplikacji, reaktywnie zmieniał się renderowany UI. Dodatkowo token był zapisywany w local storage.
Niby dla sesji jest wszystko podobnie, mamy token w postaci ciasteczka. Zastanawiam się jednak nad tym w jaki sposób najlepiej zmieniać stan aplikacji frontendowej w zależności od tego czy jesteśmy zalogowani. Było by to oczywiste gdyby nie httpOnly cookie. Klient nie może sprawdzić obecności takiego ciasteczka.
Przeglądając internet i myśląc nad tym samemu, wpadłem na następujące rozwiązania:
- Dodatkowy równoległy plik cookie bez właściwości httpOnly.
- Endpoint API do sprawdzenia czy użytkownik jest zalogowany (wywoływany za każdym razem po załadowaniu/odświeżeniu aplikacji).
- Rezygnacja z właściwości httpOnly.
Najbardziej stabilny i bezpieczny wydaje mi się pogrubiony przeze mnie sposób. Tak planuje to zrobić, zwłaszcza, że zadziała to zarówno dla zwykłej aplikacji SPA czy też czegoś w rodzaju Universal JS App (Nuxt, Next itd..).
Mimo wszystko nie szkodzi mi zapytać o zdanie doświadczone osoby. Czy to jest najlepszy sposób czy może da się to zrobić do lepiej?
Dziękuje za wskazówki i pozdrawiam serdecznie :)