Buduję aplikację AngularJS, która współpracuje z interfejsem API, który używa tokenów uwierzytelniania do uwierzytelniania użytkowników. Wydaje się, że wszystko działa dobrze, ale zmagam się z metodą, aby właściwie utrzymać token uwierzytelniania między żądaniami.Trwający token uwierzytelniania w AngularJS
W tej chwili, gdy użytkownik loguje się przy użyciu prawidłowych poświadczeń, zwracana jest nazwa authToken
i ustawiam ją na $rootScope.authToken
. Wysyłam również ten token autoryzacji dla przyszłych żądań, ale jeśli wykonam twardy przeładowanie, ponownie załaduję stronę F5 $rootScope
zostanie wyczyszczona i będę musiał ponownie uwierzytelnić.
Jestem świadomy, że mogę przechowywać authToken w ciasteczku, ale czy to byłby najbezpieczniejszy sposób? Czy lepiej wykorzystać pamięć lokalną do przechowywania tokena? Jeśli używana jest pamięć lokalna, czy nie zostanie ona usunięta po ponownym uruchomieniu przeglądarki? Idealnie polubiłbym login, który trwałby przez kilka dni.
Czy w takim przypadku dopuszczalne jest szyfrowanie tokena logowania po stronie serwera, zanim zostanie ono wysłane do użytkownika, aby przechowywać zaszyfrowaną wersję? Następnie, gdy token zostanie wysłany na serwer, zostanie odszyfrowany i sprawdzony, aby upewnić się, że jest ważny itd. Nie ma problemu z odwołaniem wszystkich sesji użytkownika, są przechowywane w tabeli i każde żądanie klienta jest sprawdzane przeciwko nim. Jeśli wyczyścisz tabelę, wszyscy się wylogują :) –
Tak, zdecydowanie zaszyfruj ją po stronie serwera i ponownie sprawdź po każdym żądaniu API, które otrzymuje serwer. Ten model jest najbezpieczniejszy do użycia jako podstawowa bramka bezpieczeństwa. Jest jeszcze kilka problemów z tym podejściem i polecam również ustawienie tokena CSRF (oprócz wartości 'authToken'). AngularJS natywnie obsługuje ten dodatkowy token, co dodaje kolejną barierę do twojej aplikacji. Przejrzyj dokumenty na XSRF tutaj: https://docs.angularjs.org/api/ng/service/$http –
Awesome, thanks. –