Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

282
Vistas
Limite las páginas a cierto tipo de usuario Nuxt y Firebase Firestore (autorización basada en roles)

necesita algunos consejos aquí.

La aplicación web My Nuxt & Firebase/Firestore tendrá 3 tipos diferentes de usuarios:

  1. subcontratista
  2. contratista
  3. trabajador

Primero, quiero que mis usuarios, cada vez que inicien sesión, inicien sesión en la página relacionada con su tipo de usuario. por ejemplo: inicio de sesión de subcontratista empujar a /subcontratista, inicio de sesión de contratista empujar a /contratista, etc.

También quiero que el usuario solo pueda ver páginas relacionadas con sus tipos. (el usuario A solo puede ver /A y /Atwo, el usuario B solo puede ver /B y /Btwo, el usuario C solo puede ver /C y /Ctwo, etc.)

Quiero evitar el uso de funciones en la nube si puedo, por lo que entiendo, no puede implementar su aplicación en el plan gratuito si su aplicación tiene funciones en la nube.

De todos modos, ¿está por debajo de la forma correcta de hacerlo?

  1. Cree en firestore, un documento de usuarios que contenga detalles del tipo de usuario, por ejemplo: "tipo de usuario: subcontratista"
  2. En el middleware, haga la lógica, según el tipo de usuario. (en mi caso, necesito tener un archivo js de middleware de 3 diferencias (isSubcontractor.js, isContractor.js, isWorker.js)
  3. agregue middleware: "el archivo de middleware", dentro de mi página

Si es correcto, ¿cómo hacer los pasos 1 y 2? ¿Hay algún artículo o código fuente de la aplicación de la vida real que explique brevemente lo que quería?

Principiante aquí. Ya he buscado por aquí y por allá en Internet, pero no puedo encontrar la respuesta que quería :(

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Las reclamaciones personalizadas son definitivamente una opción, pero eso requeriría funciones en la nube o un servidor. Sí, puede almacenar el tipo de usuario en su documento de Firestore y verificarlo antes de que se muestre la página o cuando sea necesario. Sin embargo, debe asegurarse de que solo los usuarios autorizados puedan cambiar su función.

El flujo sería tan simple como:

  1. El usuario inicia sesión
  2. Lectura de su función del documento de Firestore
  3. Redirigir a la página relevante
 import { getAuth, signInWithEmailAndPassword } from "firebase/auth"; import { getFirestore, doc, getDoc } from "firebase/firestore"; const auth = getAuth(); const firestore = getFirestore(); const login = async () => { const { user } = await signInWithEmailAndPassword(auth, email, password); // Reading user document const docRef = doc(firestore, "users", user.uid); const docSnap = await getDoc(docRef); const { userType } = docSnap.data() switch (userType) { case 'contractor': // redirect to /contractor break; case 'sub-contractor': // redirect to /sub-contractor break; default: // redirect to default page break; } }

También quiero que el usuario solo pueda ver páginas relacionadas con sus tipos.

Puede seguir el mismo método en un middleware del lado del servidor. Primero lea el tipo de usuario y luego verifique si el usuario está autorizado para visitar la página. Si no, redirija a cualquier otra página.

La mejor parte de usar Reclamos personalizados es que también puede leerlos en las reglas de seguridad de Realtime Database, Firestore y Storage. Si almacena el tipo de usuario en Firestore, no podrá leerlo en las reglas de seguridad de ningún otro servicio de Firebase. El uso de Firestore también incurre en un cargo adicional por leer el rol del usuario cada vez. Necesita una función en la nube para configurar solo el reclamo personalizado y no leer el reclamo cada vez.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda