• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Mechanizm sesji i Single Page Application

Object Storage Arubacloud
0 głosów
194 wizyt
pytanie zadane 24 marca 2021 w JavaScript przez Jakub 0 Pasjonat (23,120 p.)
zamknięte 24 marca 2021 przez Jakub 0

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 :)

komentarz zamknięcia: Temat wyczerpany

1 odpowiedź

+2 głosów
odpowiedź 24 marca 2021 przez Comandeer Guru (603,480 p.)
wybrane 24 marca 2021 przez Jakub 0
 
Najlepsza
Jeśli user kliknie przycisk "Wyloguj", to będziesz wiedział, że jest wylogowany, jeśli się zaloguje – że jest zalogowany. W innym wypadku serwer przy dowolnym requeście powinien przecież sprawdzić, czy user jest zalogowany i jeśli nie, zwrócić odpowiedni kod błędu. Dzięki temu jesteś w stanie na froncie wykryć, czy user jest zalogowany bez potrzeby posiadania dodatkowego endpointa.
komentarz 24 marca 2021 przez Jakub 0 Pasjonat (23,120 p.)

@Comandeer, Dzięki :) Ma to sens. Myślę, że pisząc projekt prędzej czy później bym to zauważył.

Przeglądałem stack overflow i nikt nie zwrócił uwagi na ten prosty szczegół... Niby banalne a jednak nie takie oczywiste na początku. Aż mi głupio, że nie od razu o tym pomyślałem. Chyba będę się trochę wstrzymywał przed zadawaniem pytań :)

Podobne pytania

0 głosów
4 odpowiedzi 891 wizyt
pytanie zadane 15 lutego 2019 w JavaScript przez Hunter94 Mądrala (6,290 p.)
0 głosów
0 odpowiedzi 456 wizyt
pytanie zadane 26 marca 2019 w PHP przez MrxCI Dyskutant (8,260 p.)
0 głosów
1 odpowiedź 339 wizyt
pytanie zadane 14 lutego 2018 w JavaScript przez Mateusz Wandzel Nowicjusz (120 p.)

92,755 zapytań

141,677 odpowiedzi

320,423 komentarzy

62,101 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...