Autore Topic: Gestione corretta Login  (Letto 482 volte)

Offline tregua87

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Android 4.4.4
Gestione corretta Login
« il: 22 Agosto 2014, 11:27:45 CEST »
0
Buon giorno, vi scrivo perché ho un dubbio su come gestire correttamente la struttura di un Login.

Vi spiego il contesto:
Devo fare una applicazione che prevede il login dell'utente su un server remoto (niente di strano).
Quello che mi aspetto è che quando si fa partire l'applicazione essa controlli se l'utente è già loggato, se lo è viene mandato all'activity principale, altrimenti viene mostrata un activity per il login (ed eventuale registrazione)

Il problema è che non so come organizzare le Activity, mi sono venute in mente due soluzioni.

Intanto partiamo con gli attori, come minimo penso ci saranno 2 Activity:
  • LoginActivity - per il login
  • Activity1 - dove si mostrano le principali funzioni dell'applicazione...

Le due soluzioni che mi sono venute in mente sono:
  • Mantengo Activity1 come MainActivity, e in fase di onCreate (o onStart ?) controllo tramite l'AccountManager se c'è già un utente registrato, valido i dati salvati sul server e se l'utente ha bisogno di loggarsi lancio l'intent per la LoginActivity
  • Setto la LoginActivity come MainActivity e in fase di onCreate faccio i testi di validazione dell'utente, nel caso in cui NON avessi bisogno di far loggare l'utente (perché ha già inserito i suoi dati precedentemente) faccio in automatico un intent verso l'Activity1

A naso credo che la soluzione 1 sia quella più corretta, però non ho trovato linee guida per capire come muovermi (e sicuramente ci sono, aiutatemi a trovarle please :).

Una volta capito quseto si può complicare il sistema aggiungendo anche la fase di regitrazione o il fatto che ci potrebbero essere più account registrati nell'AccountManager per la nostra applicazione, intanto volevo partire dalle basi.

Ho parlato di l'AccountManager appunto perchè vorrei utilizzarlo per gestire i miei utenti sul device, mi sembra sia la cosa più sicura e professionale.

Per qualsiasi cosa sono a vostra disposizione.
« Ultima modifica: 22 Agosto 2014, 11:29:55 CEST da tregua87 »

Offline Paso

  • Utente junior
  • **
  • Post: 98
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy sIII mini
  • Sistema operativo:
    Linux Mint 17 64-bit
Re:Gestione corretta Login
« Risposta #1 il: 22 Agosto 2014, 14:03:34 CEST »
0
Ciao!
Io usarei una sola Activity che, quando viene creata (onCreate), prima fa il controllo e poi chiama un fragment: LoginFragment se il controllo ha successo altrimenti il MainFragment

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Gestione corretta Login
« Risposta #2 il: 22 Agosto 2014, 14:18:01 CEST »
0
Fare un Activity, ci metti un caricamento. Se la richiesta restituisce loggato allora avvi la 3 activity, altrimenti avvi la seconda activity.

Una volta completata la seconda (ovvero login), con il pulsante viene rimandato alla terza.

Quindi arrivi sempre alla terza, che sarà un menu presumibilmente

Offline tregua87

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Android 4.4.4
Re:Gestione corretta Login
« Risposta #3 il: 23 Agosto 2014, 18:32:55 CEST »
0
Intanto vi ringrazio per i vostri suggerimenti.

Credo che la soluzione più elegante sia quella proposta da Paso, ma il mio menu è a sua volta un activity con dentro un fragment e non so come incastrarci dentro quello che suggerisci.

Per capirci, ho preso come base per la mia MainActivity la Navigation Drawer Activity che propone AndroidStudio, per capire di cosa sto parlando fate prima a provarla sul vostro IDE :)

Anche se un po' retrò alla fine credo che userò la soluzione proposta da tonno16, tramite una terza activity decido quale delle due (Main o Login) lanciare.

Ho un dubbio però, nella tua soluzione una volta lanciata l'activity di Login (cosi come per la Main) usando il tasto back si torna all'activity di Loading, come potrei evitare questo comportamento?

Pensavo di usare qualche flag da passare all'itent, ma non capisco quale usare.
« Ultima modifica: 23 Agosto 2014, 18:36:05 CEST da tregua87 »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Gestione corretta Login
« Risposta #4 il: 23 Agosto 2014, 18:40:41 CEST »
0
Non so. Ma io la vedo prestante come cosa.

1 caricamento
2 login
3 menu dell app.

Se già loggato allora start 3. Senza alcun pulsante di back.
 Un po come il login di FB. Se sei già loggiato l' app evita di aprire il login

Offline tregua87

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    Android 4.4.4
Re:Gestione corretta Login
« Risposta #5 il: 23 Agosto 2014, 18:49:49 CEST »
0
Certo! Ho capito benissimo come fare, e l'ho anche già fatto :)

Il mio dubbio era, premendo back sull'activity2 (per esempio) ritorni alla activity1, mentre sarebbe bello tornare alla homepage (o all'activity prima della 1).

Per fare questo ho risolto, basta impostare il flag android:noHistory="true".

Per esempio, guarda questo manifest:

Codice (XML): [Seleziona]
<activity
         android:name=".LoadingActivity"
         android:label="@string/title_activity_loading"
         android:noHistory="true">
     <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
     </intent-filter>
</activity>

In questo modo l'activity per il caricamento non viene mantenuta nello stack delle activity, quindi continuando a premere il tasto back non rischi di ritornarci.

Lo stesso ragionamento va applicato anche all'activity di login, sarebbe sgradevole se nel menu principale, premendo back, si tornasse al login.

Spero di essermi spiegato.