ANÚNCIO

~/questoes/programacao

Qual listener do Firebase permite monitorar mudanças no estado de autenticação?

Responda, confira o feedback e use o resultado para orientar sua revisão.
Aula de referência Como Criar um Login com React e Firebase (Autenticação Simples)
Para fixar

Monitorando Mudanças de Autenticação com onAuthStateChanged

Conceito central

O onAuthStateChanged é um listener do Firebase que fica constantemente monitorando quando um usuário faz login, logout ou quando a sessão muda. Ele permite que sua aplicação reaja automaticamente a essas mudanças, atualizando a interface e controlando o acesso a áreas protegidas.

Por que essa resposta faz sentido

onAuthStateChanged é exatamente o listener que você precisa usar para monitorar mudanças no estado de autenticação em tempo real. Ele dispara automaticamente quando um usuário entra ou sai da aplicação, permitindo sincronizar o estado do Firebase com a interface React.

Armadilhas comuns

  • Confundir onAuthStateChanged com listeners para dados do usuário (como profile updates) — eles monitoram coisas diferentes.
  • Não configurar o listener no componente raiz ou no useEffect global, deixando a aplicação sem sincronização quando o usuário faz logout.
  • Achar que onAuthStateChanged só funciona após um login — ele dispara automaticamente ao carregar a página para verificar se há uma sessão ativa.

Entenda as alternativas

A

onUserStateChanged não existe no Firebase. Embora pareça lógico monitorar mudanças de perfil, o Firebase usa listeners específicos para autenticação e dados de usuário em separado.

B

onAuthStateChanged é o listener correto do Firebase para monitorar mudanças de autenticação em tempo real. Ele detecta login, logout e mudanças de sessão, sendo essencial para manter sua aplicação sincronizada com o estado real do usuário.

C

onSessionChanged não existe no Firebase. O Firebase não fornece um listener específico para rastrear duração de sessão; esse tipo de monitoramento precisaria ser implementado manualmente na sua aplicação.

D

onLoginStateChanged não é o nome correto do listener do Firebase. Embora o nome seja intuitivo, o Firebase usa exclusivamente onAuthStateChanged para monitorar todos os eventos de autenticação, incluindo login.

Dica prática: Sempre coloque onAuthStateChanged em um useEffect dentro de um componente raiz (como App.js). Ele vai verificar se há usuário autenticado ao carregar a página, permitindo manter a sessão ativa mesmo após atualizações. Exemplo: useEffect(() => { const unsubscribe = auth.onAuthStateChanged(user => { setUser(user); }); return unsubscribe; }, []);

Revise pensando: Se um usuário abrir sua aplicação React e estiver logado no Firebase, o onAuthStateChanged vai disparar automaticamente? Por quê?