2011-10-09 8 views
8

Ho uno script PHP che effettua l'accesso e restituisce un array JSON con un ID sessione se l'accesso ha avuto successo.Strategia App Android per tenere traccia di una sessione di login

Nella mia app, voglio accedere in prima pagina e continuare attraverso l'accesso all'app. Ho creato una classe singleton che contiene un ID di sessione (insieme ad alcuni altri campi) ricevuti dal JSON dal Pagina PHP. Il campo di questo oggetto singleton "session_id" viene controllato in base a ciò che l'utente fa.

Se l'utente desidera disconnettersi, session_id viene impostato su null, quindi si disconnette.

Io uso anche la biblioteca HttpURLConnection di pubblicare il nome utente/password quando si accede.

E 'questo un approccio abbastanza decente per la gestione di questa situazione?

+2

Questo è anche l'approccio che uso, ma sono interessato anche ad altre alternative. –

risposta

24

Qui ci sono alcune cose che si dovrebbe pensare:

  • Una volta autenticato l'utente e memorizzato il session_id localmente, inviare il session_id nell'intestazione di ciascuna delle vostre richieste http. In questo modo, non invierai le credenziali per ogni richiesta, ma l'ID della sessione. E se qualcosa accade sul lato server della sessione, la transazione non sarà consentita.
  • Quando si disconnette, non solo eliminare session_id dal lato dell'app (client). Invia una disconnessione al server in modo che la sessione possa essere eliminata dal lato server.
  • Se la sessione viene interrotta sul lato server, è necessario eseguire 1 di 2 elementi A) per richiedere all'utente di effettuare nuovamente il login. B) Utilizzare le credenziali del negozio per accedere nuovamente, creare un nuovo ID di sessione e memorizzarlo di nuovo nel singleton.

Ciò garantirà un po 'più sicurezza e funzionalità rispetto alla semplice cancellazione dell'ID di sessione sul lato dell'app.

+1

Non penso che stia facendo altre richieste http oltre a quella di accesso iniziale. Gran parte della sua funzionalità sembra locale. +1 per menzionare il modo corretto di fare richieste autenticate. –

0

Questa strategia probabilmente funzionerà. In un'app su cui ho lavorato, ho memorizzato i dati di ritorno dal login nelle preferenze condivise di Android. Se l'utente si è disconnesso, ho cancellato le preferenze. Questo ha permesso agli utenti di rimanere loggati, anche se hanno chiuso l'app e sono tornati più tardi. Avevo un token di autenticazione che ho controllato per vedere se il login dell'utente era ancora valido.

Come pianificare la gestione degli accessi persistenti? Scade il sessionID? Potresti voler pensare a queste situazioni altrimenti, una volta che un utente ha effettuato l'accesso, verrà registrato per sempre o finché l'app sarà aperta.

+0

@ Mike L Ho bisogno del tuo aiuto. Ho un servizio web in cui ho un nome metodo generateToken.Questo metodo Token è usato per la sessione per quel particolare utente.Mentre che Quando l'accesso utente è in primo luogo devo ottenere il token per quell'utente per qualche tempo quel Token è valido e l'utente deve ottenere un altro token dopo la prima scadenza. Puoi aiutarmi come memorizzare il token di sessione i.e Cookie basato su KSOAP 2 –