2016-05-21 14 views
6

W Firebase 2 mi było wykonać synchronicznego sprawdzenie, czy użytkownik został zalogowany, npFirebase 3 - ref.getAuth() równoważne

if (!ref.getAuth()) ..go to login page 
else ..show page 

może uzyskać dostęp do stanu currentUser z firebase.auth().currentUser tak starałem się zrobić.

if (!firebase.auth().currentUser) ..go to login page 
else ..show page 

problemem jest to, że zawsze jest początkowo pusty, więc to przekierowuje do strony logowania, a następnie kilka chwil później onAuthStateChanged dzieje, a użytkownik jest zalogowany

Czy jest jeszcze jakiś sposób, aby to sprawdzić synchronicznie? Lub w inny sposób czy istnieje obietnica, której mogę słuchać, aby pokazać spinner ładujący? Dzięki.

Odpowiedz

2

Byłem przy użyciu uwierzytelniania stanu słuchacza, aby określić, czy użytkownik jest zalogowany.

auth.onAuthStateChanged(function(user) { 
    console.log('authStateChanged', user); 
    if (user) { 
     console.log("Welcome UID:" + user.uid); 
    } 
    }); 

Po dołączeniu tego słuchacza od razu, to ogień z prawidłowym stanie.

Kiedy uruchomić aplikację, zalogować się i odświeżyć stronę, wyjścia dziennika:

authStateChanged Fl {...}

Welcome UID: 052289713245805425655890E9024AB4ADBA5404B3C0

więc może użyć pierwszego wywołania detektora w celu wykrycia, czy użytkownik jest już zalogowany.

+0

Dzięki, ale dla mnie jest małe opóźnienie około 2s, myślę, że będę musiał pokazać spinner ładujący, a następnie przekierować lub pokazać stronę, gdy pojawi się 'onAuthStateChanged'. –

+0

W powyższym kodzie przepływ jest prawidłowy. Jeśli opóźnienie jest zauważalne dla użytkownika, można łatwo dodać wskaźnik ładowania, pokazując go, gdy widok ładuje się i ukrywa, gdy uruchamiane jest 'onAuthStateChanged()'. –

+0

To właśnie zrobiłem - dobrze wiedzieć, że czegoś mi nie brakowało i to jest oczekiwany sposób –