Quando verificare se l'utente ha effettuato l'accesso?

0

Ho un'app con accesso facoltativo in cui alcune funzionalità richiedono l'accesso dell'utente.

Quando si verifica se l'utente è connesso utilizzo un framework che esegue una funzione asincrona che richiede un token di accesso dal portachiavi o dal nostro server (a seconda che il token abbia bisogno di aggiornamento) con un blocco di completamento che ci dice cosa fare con quell'informazione. Qual è la migliore pratica per usare una funzione come questa?

  1. Verifica se l'utente è connesso quando apre l'app (o la porta in primo piano) e imposta lo stato di accesso su una bandiera globale
  2. Verifica se l'utente è loggato quando un viewController che potrebbe richiedere l'autenticazione carica e lo imposta su un flag locale
  3. Chiama direttamente la funzione framework quando è necessario

Il primo approccio che temo sarà inaccurato e potrebbe richiedere l'archiviazione degli accessKey dell'utente in una variabile globale. Il terzo approccio che l'utente dovrà attendere fino al completamento della nostra richiesta di token.

    
posta Declan McKenna 22.02.2018 - 14:08
fonte

2 risposte

2

Personalmente faccio quanto segue:

  1. L'utente accede all'app (o meno) - un token di autenticazione (generato / memorizzato sul server) è (anche) memorizzato localmente se accedono correttamente

  2. Qualsiasi funzionalità che richiede un login (token) controlla prima la memoria locale; se non c'è il token, fai il login per accedere - se c'è un token prova la richiesta autenticata

  3. Se l'utente ha un token (presumibilmente valido) e la richiesta autenticata fallisce , semplicemente "espira" la sessione locale (dati chiari) e richiede una richiesta di login con qualcosa del tipo " sessione scaduta "come notifica

  4. Altrimenti tutte le richieste hanno un token valido e invia / finiscono normalmente

Il passaggio 3 è importante. Controlla la cache e se c'è un token, prova la richiesta. Se fallisce, il token potrebbe essere scaduto, essere falso, essere scaduto, essere stato manomesso, ecc. Ma in ogni caso, il tuo server dovrebbe essere la parte importante di questo passaggio. È necessario convalidare i token e rispondere correttamente in caso di uno non valido.

Memorizza le cose e utilizza la cache, ma controlla i problemi relativi ai token sul lato server e invia la risposta corretta in modo che l'app possa "rilevare" l'errore e richiedere una nuova autenticazione.

Una volta impostato il precedente, puoi controllare la cache locale isLoggedIn() (o qualsiasi altra cosa tu abbia) tutte le volte che vuoi (per ogni funzione / azione che richiede l'autenticazione).

    
risposta data 23.02.2018 - 00:55
fonte
0

Dove hai un token di accesso e aggiornamento, in genere il token di aggiornamento avrà un lungo periodo di scadenza.

Devi solo chiedere all'utente di accedere quando il token di aggiornamento scade. Quali possono essere giorni o addirittura mesi.

Ti suggerisco di controllare la data di scadenza quando l'utente avvia l'app e chiedere loro di ri-accedere se il token è scaduto o pensi che il token scadrà mentre stanno usando l'applicazione. cioè il token sta per scadere.

Si spera che ciò significhi che all'utente viene richiesto raramente di accedere e, quando lo sono, è quando avviano l'app, piuttosto che nel mezzo di un processo.

    
risposta data 22.02.2018 - 17:27
fonte