2015-08-27 4 views
9

Ho un'applicazione incorporata in firebase e angolare e desidero essere in grado di mantenere gli utenti connessi dopo aver aggiornato la pagina. In questo momento ho una schermata di login con due campi di input di base che si legano a un controllerCome posso mantenere un utente connesso a un'app firebase dopo l'aggiornamento?

this.email = ""; 
    this.pass = ""; 
    this.emessage = ""; 

    this.loginUser = function() { 
     ref.authWithPassword({ 
      email: this.email, 
      password: this.pass 
     }, function(error, authData) { 
      if (error) { 
       console.log("Login Failed!", error); 
       this.emessage = error.message; 
       $scope.$apply(); 
      } else { 
       dataStorage.uid = authData.uid; 
       $location.path('/projects'); 
       $scope.$apply(); 
      } 
     }.bind(this)); 
    } 

Questo è tutto bene e dandy e funziona, ma quando l'utente aggiorna la pagina che vengono registrati di nuovo fuori. C'è un modo per, quando il controller carica, vedere se l'utente è già loggato e reindirizzato automaticamente? Grazie!

+1

Salvare il token di accesso alla sessione o LocalStora? – Fals

+2

Come si fa? Mi scuso se questa è una domanda troppo ampia. –

risposta

14

Il codice che ora gestisce è il caso in cui l'utente esegue l'accesso. Per gestire i casi in cui l'utente ha già effettuato il login, si controlla lo stato di autenticazione. Dal Firebase documentation on monitoring auth state:

// Create a callback which logs the current auth state 
var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com"); 
ref.onAuth(function(authData) { 
    if (authData) { 
    console.log("User " + authData.uid + " is logged in with " + authData.provider); 
    } else { 
    console.log("User is logged out"); 
    } 
}); 

In genere si desidera solo per mostrare il registro sul pulsante nella else di questa funzione.

+0

Grazie amico! Non potevo credere che sarebbe stato così facile. –

+0

Prego. Di solito trascuravo questo fino a poco tempo fa e mi sono imbattuto in tutti i tipi di problemi cercando di nascondere il mio pulsante di accesso, quindi apprezzo la possibilità di farti sapere quanto è banale * una volta che sai come *. –

+0

cos'è authData ??? –

0

Se si utilizza Angular 4, è possibile utilizzare AngularFire2 - Integrazione ufficiale di Firebase.

Ho un AuthService che include AngularFire2. Ho appena recuperato AuthSession nel costruttore del servizio e lo uso quando ne ho bisogno. Esempio:

@Injectable() 
export class AuthenticationService { 

    private authState: any; 

    constructor(public afAuth: AngularFireAuth) { 
     this.afAuth.authState.subscribe((auth) => { 
      this.authState = auth 
     }); 
    } 

    get user(): any { 
     return this.authenticated ? this.authState : null; 
    } 
} 

servizio di autenticazione completa codice here completa angolare 4 con l'esempio Firebase here

Problemi correlati