Maison  >  Questions et réponses  >  le corps du texte

VueJS et Firebase : vérifiez si l'utilisateur est connecté après l'actualisation de la page

<p>Je développe une application Web utilisant Vue 3 et le framework Firebase. En guise de stroe, j'utilise Pinia. Pour l'authentification, j'utilise Firebase et jusqu'à présent, cela fonctionne très bien, les utilisateurs peuvent s'inscrire et se connecter. Une fois qu'un utilisateur se connecte, ses données sont stockées dans le stockage Pinia. </p> <p>Cependant, une fois que l'utilisateur se connecte et recharge la page, les données stockées dans le stockage Pinia sont perdues. Si j'utilise la fonction Firebase <code>onAuthStateChanged()</code> </p> <p>Ma première solution consistait à appeler la fonction <code>onAuthStateChanged()</code> à chaque fois que l'application est lancée et que le magasin pinia est rempli avec les données requises. J'ai essayé d'appeler la fonction <code>onAuthStateChanged()</code> dans le fichier de configuration Firebase, mais le magasin pinia n'y a pas encore été initialisé. </p> <p>À quel moment de l'application Vue dois-je appeler la fonction <code>onAuthStateChanged()</code> afin que l'utilisateur soit automatiquement connecté après une actualisation et que je puisse écrire les données utilisateur sur le stockage Pinia ? </p>
P粉680487967P粉680487967417 Il y a quelques jours511

répondre à tous(1)je répondrai

  • P粉195402292

    P粉1954022922023-08-29 21:23:43

    Je ne suis pas sûr de ce que vous avez essayé, mais je sais que cela fonctionnera. Bien sûr, vous pouvez déplacer AuthStateChanged hors de votre magasin et cela fonctionnera toujours. N'oubliez pas que vous devez utiliser des observateurs ou des accessoires calculés pour suivre store.user et mettre à jour l'interface utilisateur.

    import { getAuth, onAuthStateChanged } from 'firebase/auth';
    
    const auth = getAuth();
    onAuthStateChanged(auth, async () => {
      const store = useStore();
      store.setUser();
    });
    
    
    const useStore = defineStore('store', {
      state: () => ({ 
        user: null
      }),
      actions: {
        setUser() {
          // Set user here
          // this.user = ...
        }
      }
    });

    répondre
    0
  • Annulerrépondre