2011-09-09 18 views
7

Ho intenzione di creare un sistema con 2 parti: 1. Sito Web PHP (CakePHP). 2. Applicazione mobile (Android & iPhone).Modello di autenticazione per l'applicazione Android

L'utente deve accedere con usr & pwd per utilizzare il mio sistema (web e applicazione mobile). Ma non ho molte esperienze con l'autenticazione dell'utente. Cosa devo memorizzare: usr & pwd, stringa token. Voglio trovare un "modello di autenticazione utente" per il mio sistema (applicazione Web e mobile).

C'è qualcuno che ha esperienza sull'autenticazione dell'utente. Qualcuno sa come implementarlo? Qualche codice di esempio? Aiutami plz :)

risposta

13

Questo è ciò che facciamo per le nostre applicazioni,

  1. In primo luogo abbiamo inviare un nome utente e una password al server da nostra applicazione.

  2. Al server, autenticano le credenziali e restituiscono una risposta che è una combinazione di un token di richiesta e un flag di successo.

  3. Nel nostro applicin, controlliamo il flag di successo. Se è impostato su true, salviamo il token di richiesta e lo usiamo per tutte le prossime richieste in uscita sul server.

  4. Ora, quando il server riceve una richiesta, controlla il database per vedere se un utente ha questo token. In caso affermativo, controlla l'ora in cui è stata effettuata l'ultima richiesta. (Si tratta di gestire i casi in cui il login utente è scaduto). Se la differenza tra l'ora corrente e l'ultima richiesta è superiore al limite impostato, l'applicazione richiede una nuova richiesta di accesso per generare un nuovo token. Altrimenti continui con la richiesta e rispondi con i risultati.

    Questo è il modo in cui i ragazzi sul lato server nel mio posto di lavoro lo fanno. Lavoro sul lato client. Ma questo è fondamentalmente ciò che viene fatto.

Modifica: Informazioni sul token. Fondamentalmente una stringa di 32 caratteri generata con un metodo generatore casuale. Pertanto, quando un utente invia una richiesta di accesso e l'accesso è riuscito, creiamo un token utilizzando il metodo del generatore e lo memorizziamo nel nostro database del server come gli utenti richiedono il token insieme all'ora e alla data correnti.

Quindi, quando l'utente invia un'altra richiesta al server, prima prendiamo il token e controlliamo se esiste un utente con quel token. Se c'è, allora il prossimo controllo è per vedere se questo è un vecchio token di richiesta. Quindi controlliamo l'ora corrente con il tempo salvato nel database. Se la richiesta è stata inviata prima del limite (ad esempio 5 minuti), aggiorniamo l'ultima richiesta nel database con l'ora corrente e restituiamo il risultato al client.

Con questo metodo è possibile eseguire un'autenticazione per ogni richiesta controllando il token e l'ultima volta.

Supponiamo che si desidera che l'app venga registrata in qualsiasi momento finché l'utente non si disconnette. In tal caso non è necessario verificare la durata di ciascuna richiesta. Tutto ciò che devi fare è salvare il token di richiesta sul dispositivo client. E quando l'utente si disconnette, elimina il token dal client. Quindi gli sarà richiesto di accedere la volta successiva in quanto non ha token. È un po 'più sicuro per salvare un token di richiesta sul dispositivo client rispetto al salvataggio di un nome utente e una password in questo scenario.

Ci sono molte funzioni là fuori per generare token casuali.

+0

Grazie per il vostro aiuto :) Avete altra opzione per il modello di autenticazione utente? Voglio sapere tutte le opzioni :) –

+0

Questo è ciò che normalmente facciamo. Bene, forse altri risponderanno con altre opzioni. I sistemi di autenticazione continuano a evolversi in base al requisito – blessenm

+0

Puoi aiutarmi un po 'a capire come funziona il tokening? devo generare un token sul lato server ogni volta che un utente effettua l'accesso? –

Problemi correlati