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

Node.js Zarządzanie sesjami

+2 głosów
154 wizyt
pytanie zadane 15 lipca 2021 w JavaScript przez yapyap Obywatel (1,740 p.)

Witam, posiadam server na node.js / express z sesjami zapisywanymi w ciasteczkach, jeśli trzeba będzie zmienić sposób zapisu sesji to nie ma problemu, ale wolałbym nie.

 

W jaki sposób zarządzać sesjami tak aby np. zniszczyć wszystkie sesje danego użytkownika? Załóżmy że komuś się włamali na konto i po zmianie hasła chce aby wszystkie poprzednie sesje przestały istnieć, jak tego dokonać?

 

Obecne rozwiązanie wygląda tak że przy tworzeniu sesji jest dodawana do tablicy z sesjami wraz z id użytkownika np:

{
session : session,
id : 'USERNAME'
}

jeśli ktoś da np. "Zniszcz wszystkie aktywne sesje" to ta tablica z obiektami jest iterowana i wszystkie sesje z nazwą użytkownika np. "USERNAME" są niszczone metodą destroy()

Dziala? Działa, ale nie wiem czy tak to powinno wyglądać

2 odpowiedzi

+4 głosów
odpowiedź 15 lipca 2021 przez Comandeer Guru (571,400 p.)
wybrane 19 lipca 2021 przez yapyap
 
Najlepsza
Jak najbardziej taki sposób jest poprawny. Jedyny problem, jaki widzę, to taki, że w chwili, gdy aplikacja z jakiegoś powodu się wyglebi, to wszyscy użytkownicy zostaną wylogowani. Mimo wszystko tego typu informacje warto trzymać w jakiejś bazie danych, dzięki czemu dane są trwałe.

Można też pokusić się o usunięcie ciasteczka, jeśli zawiera dane o sesji, której nie ma w bazie. Nie jest to konieczne, ale… eleganckie ;)
0 głosów
odpowiedź 15 lipca 2021 przez krissto7 Gaduła (3,110 p.)
Zależy od tego jakiej biblioteki używasz.

Możesz to zrobić w następujący sposób:

1. app.use(cookieParser());

2. res.cookie('cookiename', 'cookievalue', { maxAge: 999999}); // cookievalue może być jako object(tak jak potrzebujesz)

3. aby usunąć ciasteczko odnosisz się do tej samej nazwy czyli:

res.clearCookie('cookiename');

4. Jeżeli chcesz wszystkie naraz to nie wiem czy jest konkretnie taka metoda:

jeśli potrzebujesz zrobić to od strony frontu to możesz spróbować

1.https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies/remove

2. https://www.npmjs.com/package/delete-all-cookies

Od strony backendu to może po prostu przejdziesz przez wszystkie ciasteczka używając req.cookies.
komentarz 15 lipca 2021 przez ScriptyChris Mędrzec (181,080 p.)

1.https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/cookies/remove

Tylko, że ta metoda jest dostępna z poziomu wtyczki do przeglądarki, a nie bezpośrednio z poziomu strony - tam do dyspozycji jest document.cookie.

Podobne pytania

0 głosów
2 odpowiedzi 116 wizyt
pytanie zadane 17 stycznia 2020 w JavaScript przez CapTor Nowicjusz (240 p.)
0 głosów
1 odpowiedź 94 wizyt
pytanie zadane 18 sierpnia 2020 w JavaScript przez michael.scott Nowicjusz (200 p.)
0 głosów
1 odpowiedź 67 wizyt
pytanie zadane 27 kwietnia 2020 w JavaScript przez wsnofi Bywalec (2,570 p.)

88,701 zapytań

137,308 odpowiedzi

306,748 komentarzy

58,894 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...