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.

Cómo proteger los datos de usuario de los demás utilizando typegraphql-prisma

Estoy construyendo un servidor basado en typegraphql-prisma, como aquí: https://github.com/prisma/prisma-examples/tree/latest/typescript/graphql-typegraphql-crud.

Ahora tengo un servidor en el que diferentes usuarios pueden ser creados y tener diferentes publicaciones como en el código de ejemplo. ¿Hay instrucciones o un camino que deba seguir para autenticar a cada usuario y que no pueda eliminar las publicaciones de los demás? Porque ahora, cualquiera en mi cliente de consumo puede eliminar las publicaciones de cualquier otra persona. Veo algunas cosas de autenticación allí pero no veo dónde agregar código durante una mutación de eliminación como “if (notOwner) {return null}” Seguramente hay una forma de autenticar este tipo de mutaciones dentro de los resolutores autogenerados a través de algún tipo de middleware o algo así.

Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay instrucciones y pasos que puedes seguir para implementar la autenticación y autorización en tu servidor.

    1. En primer lugar, debes implementar un mecanismo de autenticación de usuario. Esto se puede hacer mediante diferentes métodos como la autenticación por correo electrónico y contraseña, el inicio de sesión social o los tokens JWT.
    2. Una vez que hayas autenticado al usuario, puedes implementar la lógica de autorización para evitar que los usuarios eliminen los posts de otros usuarios. Puedes hacer esto agregando una lógica personalizada al mutador de eliminación de posts. Esta lógica debe verificar si el usuario que intenta eliminar el post es el propietario del mismo. Si no lo es, puedes devolver un error o una respuesta nula.

    3. Para implementar middleware para la autenticación y autorización, puedes utilizar bibliotecas como Passport.js, middleware de Express o middleware de GraphQL. Estas bibliotecas te permiten interceptar las solicitudes entrantes y realizar verificaciones de autenticación y autorización antes de que se ejecute el resolver.

    4. También puedes utilizar el mecanismo de control de acceso basado en roles (RBAC) integrado de Prisma para definir roles y permisos personalizados para tus usuarios. Con RBAC, puedes definir permisos detallados para diferentes tipos de operaciones, como crear, leer, actualizar y eliminar.

    En general, la implementación de la autenticación y autorización en tu servidor requiere una combinación de lógica personalizada de resolución, middleware y políticas de RBAC. Al seguir estos pasos, puedes asegurarte de que tu servidor sea seguro y solo los usuarios autorizados puedan realizar operaciones sensibles como eliminar posts.

Comments are closed.