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ą?
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.
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.
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