2011-10-09 22 views
8

Mam pewien skrypt PHP, który loguje się i zwraca tablicę JSON z identyfikatorem sesji, jeśli logowanie się powiodło.Strategia aplikacji dla systemu Android do śledzenia sesji logowania

W mojej aplikacji chcę się zalogować na pierwszej stronie i przejść dalej przez aplikację, która jest zalogowana. Stworzyłem pojedynczą klasę, która przechowuje identyfikator sesji (wraz z kilkoma innymi polami) otrzymaną od JSON od Strona PHP. To pole obiektu singleton "identyfikator_sesji" jest sprawdzane w zależności od tego, co robi użytkownik.

Jeśli użytkownik chce się wylogować, to parametr session_id po prostu zostanie ustawiony na wartość null, co spowoduje wylogowanie.

ja też korzystać z biblioteki HttpURLConnection aby opublikować nazwę użytkownika/hasło przy logowaniu.

Czy jest to wystarczająco przyzwoite podejście do obsługi tej sytuacji?

+2

Jest to również podejście, którego używam, ale interesują mnie również inne alternatywy. –

Odpowiedz

24

Oto kilka rzeczy, które trzeba myśleć o:

  • Po uwierzytelnieniu użytkownika i przechowywane lokalnie na session_id wysłać session_id w nagłówku każdego ze swoich żądań HTTP. W ten sposób nie wysyłasz poświadczeń przy każdym żądaniu, ale o identyfikatorze sesji. A jeśli coś dzieje się po stronie serwera sesji, transakcja nie będzie dozwolona.
  • Po wylogowaniu nie usuwaj tylko identyfikatora sesji po stronie aplikacji (klienta). Wyślij także wylogowanie na serwer, aby sesja mogła zostać zabita po stronie serwera.
  • Jeśli sesja zostanie zabita po stronie serwera, będziesz potrzebować 1 z 2 rzeczy, A) zachęci użytkownika do ponownego zalogowania. B) Użyj danych logowania do sklepu, aby się zalogować, utworzyć nowy identyfikator sesji i zapisać go ponownie w swoim singleton.

Zapewni to nieco większe bezpieczeństwo i funkcjonalność niż po prostu wyczyszczenie identyfikatora sesji po stronie aplikacji.

+1

Nie sądzę, że robi on więcej żądań HTTP innych niż początkowy login. Większość jego funkcji wydaje się lokalna. +1 za wymienienie prawidłowego sposobu wykonywania uwierzytelnionych żądań. –

0

Ta strategia prawdopodobnie będzie działać. W aplikacji, nad którą pracowałem, zapisałem dane o zwrocie z logowania w preferencjach udostępnionych w Androidzie. Jeśli użytkownik wylogował się, wyczyściłem preferencje. Pozwoliło to użytkownikom pozostać zalogowanym, 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 jest nadal ważny.

Jak planujesz obsługę utrwalonych loginów? Czy sessionID wygasa? Możesz pomyśleć o tych sytuacjach, gdy użytkownik zostanie zalogowany, będzie zalogowany na zawsze lub tak długo, jak aplikacja będzie otwarta.

+0

@ Mike L Potrzebuję twojej pomocy. Mam serwis internetowy, w którym mam nazwę metody generateToken. Ta metoda Token używana jest dla sesji dla tego konkretnego Użytkownika. Chodzi o to, że przy logowaniu użytkownika muszę najpierw pobrać token dla tego użytkownika przez jakiś czas token jest ważny i użytkownik musi uzyskać kolejny token po pierwszym wygaśnięciu. Czy możesz mi pomóc, jak przechowywać token sesji, np. Cookie oparty na KSOAP 2 –

Powiązane problemy