2016-06-17 17 views
11

Quando si cerca di controllare se un utente è firmato in via firebase.auth().currentUser come questo:Non è possibile ottenere currentUser sul carico

if (firebase.auth().currentUser === null) { 
    console.log('User not signed in'); 
} 

Ogni volta che aggiorna la pagina, o navigare intorno al rendimenti superiori NULL (anche se ho appena effettuato il login).

La cosa strana è che, se accedo

console.log(firebase.auth().currentUser) // This returns null 
console.log(firebase.auth()) // Here I can inspect the object and currentUser exists...! 

io non so davvero cosa sta succedendo qui. Sto usando React e Redux, ma non dovrebbe davvero importare direi.

C'è un piccolo ritardo in cui il firebase si inizializza e non è possibile accedere a currentUser? In tal caso, come posso vederlo nell'output di registro di firebase.auth()?

risposta

12

Questa è una domanda comune. https://firebase.google.com/docs/auth/web/manage-users È necessario aggiungere un osservatore per onAuthStateChanged per rilevare lo stato iniziale e tutte le successive modifiche di stato,

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    // User is signed in. 
    } else { 
    // No user is signed in. 
    } 
}); 
+2

Questo è a ricevere la notifica una modifica dello stato di autenticazione, non mi fornisce un modo per verificare se un utente è autorizzato in qualsiasi momento – Chris

+3

In realtà questo si attiverà sempre quando viene determinato lo stato iniziale. Successivamente si innescherà quando lo stato di auth cambia. È il modo consigliato per rilevare lo stato di autenticazione iniziale. È possibile rimuoverlo dopo aver determinato lo stato iniziale. var unsubscribe = auth1.onAuthStateChanged (funzione (utente) {// fa init e poi annulla l'iscrizione; unsubscribe();}); – bojeil

Problemi correlati