Strategia aplikacji na Androida do śledzenia sesji logowania

Mam jakiś skrypt PHP, który loguje się i zwraca tablicę JSON z identyfikatorem sesji, jeśli logowanie się powiodło.

W mojej aplikacji, chcę zalogować się na stronie głównej i kontynuować przez aplikację jest zalogowany. Utworzyłem klasę singleton, która Przechowuje identyfikator sesji (wraz z kilkoma innymi polami) odebrany z JSON ze strony PHP. Pole "session_id" tego obiektu singleton jest sprawdzane w zależności od tego, co robi użytkownik.

Jeśli użytkownik chce się wylogować, to session_id zostaje ustawione na null, co powoduje wylogowanie się.

Używam również biblioteki HttpURLConnection do wpisywania nazwy użytkownika/hasła podczas logowania.

Czy to wystarczająco przyzwoite podejście do radzenia sobie z tą sytuacją?

Author: SBerg413, 2011-10-10

2 answers

Oto kilka rzeczy, o których powinieneś pomyśleć:

  • po uwierzytelnieniu użytkownika i zapisaniu session_id lokalnie, wyślij session_id w nagłówku każdego z żądań http. W ten sposób nie wysyłasz poświadczeń przy każdym żądaniu, ale identyfikator sesji. A jeśli coś stanie się po stronie serwera w sesji, transakcja nie będzie dozwolona.
  • podczas wylogowywania się nie usuwaj po prostu identyfikatora session_id po stronie aplikacji (klienta). Wyślij wylogowanie do serwer, jak również tak, że sesja może być zabity po stronie serwera.
  • jeśli sesja zostanie przerwana po stronie serwera, będziesz chciał zrobić 1 z 2 rzeczy A) poprosić Użytkownika o ponowne zalogowanie. B) Użyj poświadczeń sklepu, aby zalogować się ponownie, utworzyć nowy identyfikator sesji i zapisać go ponownie w singleton.

Zagwarantuje to nieco więcej bezpieczeństwa i funkcjonalności niż tylko wyczyszczenie identyfikatora sesji po stronie aplikacji.

 25
Author: SBerg413,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-14 13:10:18

Ta strategia prawdopodobnie zadziała. W aplikacji, nad którą pracowałem, zapisałem dane zwrotne z logowania w preferencjach udostępnionych na Androidzie. Jeśli użytkownik się wylogował, wyczyściłem preferencje. Dzięki temu użytkownicy mogli pozostać zalogowani, nawet jeśli zamknęli aplikację i wrócili później. Miałem token uwierzytelniania, który sprawdziłem, aby sprawdzić, czy login użytkownika był nadal poprawny.

Jak planujesz obsługiwać loginy? Czy sessionID wygasa? Warto pomyśleć o takich sytuacjach w przeciwnym razie, gdy użytkownik jest zalogowany, będzie zalogowany na zawsze lub tak długo, jak aplikacja jest otwarta.

 0
Author: Mike L.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-09 20:58:58