Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

273
Visualizações
Use Firebase para Auth y MongoDB para DB

Estoy creando una aplicación móvil nativa de reacción con autenticación de usuario. Decidí usar la autenticación de Firebase porque es relativamente fácil de implementar.

Quiero usar mi propio backend (nodo, express) y mi propia base de datos (MongoDB) y necesito proteger mis llamadas API para verificar si el usuario está autenticado y si tiene permiso para realizar la operación.

Pero no me siento cómodo con la validación de tokens y no estoy seguro de hacerlo de la manera correcta...

Así es como estoy tratando de hacer una solicitud GET o POST simple desde el cliente (aplicación móvil):

En el cliente, recupero el token de usuario actual y lo envío en el encabezado de mi solicitud GET:

 firebase.auth().currentUser.getIdToken(true).then(token => { fetch('http://localhost:3000', { method: 'GET', mode: 'cors', headers: { 'AuthToken': token } }).then(res => res.json().then(res => console.log(res))) .catch(err => console.log(err))

En el servidor, uso un middleware para verificar el token gracias al administrador de Firebase.

 function checkAuth(req, res, next) { if (req.headers.authtoken) { admin.auth().verifyIdToken(req.headers.authtoken) .then((token) => { console.log(token) next() }).catch(() => { res.status(403).send('Unauthorized') }); } else { res.status(403).send('Unauthorized') } }

Entonces, para una solicitud de obtención simple de un usuario registrado, tengo que hacer lo siguiente:

  1. obtener el IdToken del usuario en el lado del cliente
  2. enviarlo al servidor
  3. compruébalo con base de fuego
  4. hacer la operación en mi base de datos
  5. enviar los datos de vuelta al cliente

¿Lo estoy haciendo de la manera correcta? No sé si debo almacenar el IdToken en la memoria del teléfono para evitar obtenerlo de Firebase cada vez (pero el token caduca después de 1 hora...)

Parece una gran cantidad de operaciones de "comprobación desde firebase" solo para una simple búsqueda ...

¿Me puede dar algún consejo sobre cómo hacer que todo esto sea más eficiente?

Muchas gracias !

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

En general, su flujo me parece correcto, pero hay algunas cosas que optimizaría.


Al pasar true a getIdToken(true) , lo obliga a actualizar el token cada vez antes de ejecutar su fetch .

No es necesario, ya que Firebase ya actualiza automáticamente el token de identificación en segundo plano. Por lo tanto, puede hacerlo con menos recursos y un poco más rápido con:

 firebase.auth().currentUser.getIdToken().then(token => { fetch('http://localhost:3000', { ...

Después de llamar a admin.auth().verifyIdToken(req.headers.authtoken) , obtiene un resultado que también muestra cuánto tiempo es válido el token. Por lo tanto, puede almacenar en caché el token verificado en algún lugar hasta que esté cerca de ese momento y usar esa versión almacenada en caché si obtiene la misma entrada. Eso le ahorra llamadas para verificar IdToken`.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda