2013-07-06 21 views
13

QUICK Wstęp:mogę używać HTML5 lokalnej pamięci do przechowywania informacji o sesji użytkownika uwierzytelniania

Piszę Mongo/Ekspres/kątowa/node SPA i korzystania paszport mam setup OAuth dziennik w opcji do obsługi uwierzytelniania użytkowników/autoryzacja.

z paszportem mam powodzeniem utrzymanie sesji na serwerze, więc wszystkie moje prośby XHR (że go potrzebujesz) sprawdzają dla zalogowanego użytkownika.

Po zalogowaniu serwer umieszcza podstawowe informacje o sesji użytkownika w pliku cookie, aby klient mógł je znaleźć w oddzwanianiu od autoryzacji, następnie używam plików cookie "$ CookieStore", aby uzyskać dostęp do tego pliku cookie na kliencie, zapisać go w katalogu głównym i wyczyść plik cookie.

PROBLEM:

to doskonale działa z wyjątkiem każdym przypadku, jeżeli użytkownik odświeża przeglądarki, co powoduje moją sesję rootscope się oczywiście się wytarł.

Więc zastanawiałem się nad przechowywaniem informacji o sesji w lokalnej pamięci przeglądarki (używając store.js), to nawet przy początkowym obciążeniu mogłem sprawdzić sesję istniejącą w lokalnej pamięci przeglądarki i ominąć logowanie OAuth, jeśli było już sesja.

Czy jest to zła praktyka lub czy występują pewne problemy logistyczne/związane z bezpieczeństwem podczas przechowywania informacji o sesji użytkownika w lokalnym magazynie pamięci przeglądarki?

Ta aplikacja nie ma żadnych danych senstive, rejestracja jest bezpłatna i logowanie jest naprawdę możliwe, więc mogę śledzić użytkowników i przechowywać dane utworzone w aplikacji dla każdego użytkownika. A sesja użytkownik nigdy nie ma hasła (ja tylko pozwalają OAuth się zalogować bez opcji lokalnego).

+0

zależy. ale upewnij się, że nie mogę zmodyfikować lokalnej pamięci, aby utworzyć prawidłowy login w Twojej witrynie. to byłoby nieprzyjemne. –

+0

chciałbym przechowywać tylko identyfikator sesji i że będę prawdopodobnie przechowywać w pliku cookie. –

+0

@MarkusMikkolainen Czy cookie lepszym rozwiązaniem ze względu na zdolność do wejść i modyfikowanie obiektów w localStorage? –

Odpowiedz

6

Zamiast localStorage, spojrzeć na sessionStorage obiektu: http://www.w3schools.com/html/html5_webstorage.asp

to działa dokładnie tak samo jak localStorage, ale cały sessionStorage obiekt zostanie usunięty, gdy okno przeglądarki jest zamknięty - ale przetrwa wszelkie odświeżeniu strony. Jest to idealne miejsce do przechowywania identyfikatorów sesji i podobnych.

Należy jednak pamiętać, że sessionStorage jest izolowany w zakładce przeglądarki - oznacza to, że jeśli użytkownik zdecyduje się otworzyć łącze w nowej karcie, to sessionStorage dla tego zostanie zainicjalizowane puste.

+5

Co z autologin? Lub trwałe logowanie? – CMCDragonkai