Firebase – Cea mai bună modalitate de a verifica întotdeauna dacă un utilizator este conectat? (Programare, Reactjs, Firebase, Redux)

Tim a intrebat.

Lucrez la un proiect react folosind Firebase și mă întrebam care este cea mai bună modalitate de a confirma întotdeauna că un utilizator este conectat?

Ceea ce am făcut în prezent este pe fiecare pagină de destinație, verificați dacă utilizatorul este conectat și dacă utilizatorul este conectat, apoi continuați cu pagina și dacă niciun utilizator nu este conectat, duceți utilizatorul la pagina de conectare.

Cu toate acestea, simt că trebuie să existe o modalitate mai eficientă și mă întrebam dacă cineva de aici este familiarizat cu acest lucru?

Este utilizarea unui magazin modalitatea optimă în acest caz? De exemplu, să verificăm dacă un utilizator este conectat o dată, apoi să actualizăm magazinul și, de acolo înainte, să întrebăm întotdeauna magazinul dacă utilizatorul este conectat, mai degrabă decât să facem ping la Firebase pentru a vedea dacă un utilizator este conectat.

Vă mulțumesc pentru ajutor!

Comentarii

  • V-aș recomanda să utilizați onAuthStateChanged, , nu numai pentru a verifica dacă utilizatorul este conectat, ci și pentru a conduce stările de autentificare/flags/subscrieri în magazinul dvs. pentru componentele conectate. Expediați acțiuni atunci când se schimbă starea de autentificare pentru a vă actualiza magazinul în consecință. Puteți avea apoi, la un nivel simplu, o logică condiționată pentru a redirecționa sau afișa condiționat conținutul. –  > Por Alexander Staroselsky.
  • Nu este nevoie să verificați acest lucru pe fiecare pagină de destinație imo dacă aveți un magazin Redux. De exemplu, puteți inițializa onAuthStateChanged() atunci când aplicația dvs. se încarcă și puteți actualiza proprietățile magazinului atunci când are loc autentificarea sau deconectarea în timp real. Dacă se schimbă, puteți redirecționa sau dezabona (de la evenimentele RTDB), după cum este necesar, folosind redarea condiționată, în cadrul metodelor ciclului de viață și/sau în cadrul creatorilor de acțiuni, atâta timp cât paginile dvs. de destinație utilizează connect(). Cu ceva de genul react-router-dom puteți trece magazinul logat în/în afara val. –  > Por Alexander Staroselsky.
  • @AlexanderStaroselsky Mulțumesc Alex, exact asta mă întrebam și eu. Voi cerceta mai mult în acest sens 🙂 Mulțumesc! –  > Por Tim.
1 răspunsuri
Gavin Thomas

Ar trebui să adăugați un ascultător la onAuthStateChange și să efectuați acțiunea corespunzătoare atunci când sunteți conectat sau deconectat.https://firebase.google.com/docs/auth/web/manage-users.

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

Comentarii

  • În prezent, fac exact apelul de mai sus, dar pentru fiecare pagină de destinație, mă întrebam dacă aceasta este singura soluție pentru a verifica dacă un utilizator este conectat sau nu? –  > Por Tim.
  • Îl plasezi într-un componentDidMount undeva sus în arborele tău și va continua să asculte până când îl închizi. –  > Por Gavin Thomas.
  • Dar da, aceasta este calea preferată. –  > Por Gavin Thomas.
  • Mulțumesc! A fost foarte util –  > Por Tim.