es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Verificar campos personalizados de Firestore.

Tenemos una colección de tokens /funTokens donde cada identificador de documento es un identificador de token y los datos del documento contienen un campo name (el identificador de token es un campo también).

Queremos consultar la colección desde la web (javascript) y permitir el acceso a un documento solo si la solicitud contiene y coincide con los campos name y token.

Nota: hay muchos tokens y un token no es un usuario.

Ejemplo – alguien debería poder abrir la URL funExample.com/getTokenData?token=123&name=bob y en la consulta de Firestore de javascript pasaremos esos parámetros y los validaremos en las reglas de seguridad. Entonces, la consulta permitirá el acceso solo a este documento:


/funTokens/123: {
token: 123,
name: bob,
stuf: <>
}

¿Es posible?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible permitir el acceso a un documento en la colección funTokens solo si la solicitud contiene y coincide con los campos name y token. Esto se puede lograr a través de las Reglas de seguridad de Firebase que definen controles de acceso para operaciones de lectura y escritura basadas en condiciones específicas.

    Aquí hay un ejemplo de cómo podría verse la regla de seguridad para este escenario:

    service cloud.firestore {
      match /databases/{database}/documents {
        match /funTokens/{tokenId} {
          allow read: if request.query.token == tokenId
                       && request.query.name == resource.data.name;
        }
      }
    }
    

    En esta regla, definimos una declaración de match para la colección funTokens y especificamos que solo se permite el acceso de lectura si los parámetros de consulta token y name en la solicitud coinciden con los campos correspondientes en los datos del documento.

    Con esta regla en su lugar, la consulta Firestore desde la web (Javascript) solo tendrá acceso al documento que coincida con los campos token y name proporcionados en la URL de la solicitud.

    db.collection('funTokens').doc(tokenId)
      .get()
      .then((doc) => {
        if (doc.exists) {
          // se autoriza acceso, hacer algo con los datos del documento
        } else {
          // el documento no existe o los parámetros de la solicitud son incorrectos
        }
      })
      .catch((error) => {
        // manejar errores
      });
    

    Tenga en cuenta que esto solo se aplica a la operación de lectura en este ejemplo. Si también desea restringir el acceso a ciertos campos o requiere autenticación para operaciones de escritura, puede modificar las reglas de seguridad en consecuencia.

Comments are closed.