Creemos nuestra propia API de autenticación con Nodejs y GraphQL

Índice
  1. Manejo de autentificación
  2. Requisitos previos
  3. dependencias
  4. Configurar la estructura del directorio y el entorno de desarrollo.

La autenticación es una de las tareas más desafiantes para los desarrolladores que recién comienzan con GraphQL. Hay muchas consideraciones técnicas, incluido qué ORM sería fácil de configurar, cómo generar tokens seguros y contraseñas hash, e incluso qué biblioteca HTTP usar y cómo usarla.

En este artículo, nos centraremos en la legislación local. Quizás sea la forma más popular de manejar la autenticación en los sitios web modernos y lo hace solicitando el correo electrónico y la contraseña del usuario (a diferencia de, por ejemplo, usar la autenticación de Google).

Además, este artículo utiliza Apollo Server 2, JSON Web Tokens (JWT) y Sequelize ORM para crear una API de autenticación con Node.

Manejo de autentificación

Como en un sistema de inicio de sesión:

  • La autenticación identifica o verifica a un usuario.
  • La autorización consiste en validar las rutas (o partes de la aplicación) a las que el usuario autenticado puede tener acceso.

El flujo para implementar esto es:

  1. El usuario se registra mediante contraseña y correo electrónico.
  2. Las credenciales del usuario se almacenan en una base de datos.
  3. El usuario es redirigido al inicio de sesión cuando se completa el registro.
  4. Al usuario se le concede acceso a recursos específicos cuando se autentica
  5. El estado del usuario se almacena en cualquiera de los medios de almacenamiento del navegador (por ejemplo localStorage, cookies, sesión) o JWT.

Requisitos previos

Antes de profundizar en la implementación, aquí hay algunas cosas que deberán seguir.

  • Nodo 6 o superior
  • Hilo (recomendado) o MNP
  • Área de juegos GraphQL
  • Conocimientos básicos de GraphQL y Node
  • …¡una mente inquisitiva!

dependencias

Esta es una lista grande, así que entremos en ella:

  • Servidor Apollo : un servidor GraphQL de código abierto que es compatible con cualquier tipo de cliente GraphQL. No usaremos Express para nuestro servidor en este proyecto. En su lugar, utilizaremos el poder de Apollo Server para exponer nuestra API GraphQL.
  • bcryptjs : queremos codificar las contraseñas de los usuarios en nuestra base de datos. Por eso usaremos bcrypt. Se basa en Web Crypto APIgetRandomValues para obtener números aleatorios seguros.
  • dotenv : Usaremos dotenv para cargar variables de entorno desde nuestro .envarchivo.
  • jsonwebtoken : una vez que el usuario inicia sesión, cada solicitud posterior incluye el JWT, lo que permitirá al usuario acceder a rutas, servicios y recursos permitidos con ese token. jsonwebtokense utilizará para generar un JWT que se utilizará para autenticar a los usuarios.
  • nodemon : una herramienta que ayuda a desarrollar aplicaciones basadas en nodos reiniciando automáticamente la aplicación del nodo cuando se detectan cambios en el directorio. No queremos cerrar e iniciar el servidor cada vez que haya un cambio en nuestro código. Nodemon inspecciona los cambios cada vez en nuestra aplicación y reinicia automáticamente el servidor.
  • mysql2 : un cliente SQL para Node. Necesitamos que nos conectemos a nuestro servidor SQL para poder ejecutar migraciones.
  • sequelize : Sequelize es un ORM de nodo basado en promesas para Postgres, MySQL, MariaDB, SQLite y Microsoft SQL Server. Usaremos Sequelize para generar automáticamente nuestras migraciones y modelos.
  • sequelize cli : Usaremos Sequelize CLI para ejecutar los comandos de Sequelize. Instálelo globalmente yarn add --global sequelize-clien la terminal.

Configurar la estructura del directorio y el entorno de desarrollo.

Creemos un proyecto completamente nuevo. Crea una nueva carpeta y esto dentro de ella:

yarn init -y

La -ybandera indica que estamos seleccionando sí a todas las yarn initpreguntas y usando los valores predeterminados.

También deberíamos poner un package.jsonarchivo en la carpeta, así que instalemos las dependencias del proyecto:

yarn add apollo-server bcrpytjs dotenv jsonwebtoken nodemon sequelize sqlite3

A continuación, agregamos Babe a nuestro entorno de desarrollo:

yarn add babel-cli babel-preset-env babel-preset-stage-0 --dev

Ahora configuramos Babel. Ejecute el toque .babelrcen la terminal. Eso crea y abre un archivo de configuración de Babel y, en él, agregaremos esto:

{  "presets": ["env", "stage-0"]}

También sería bueno si nuestro servidor se iniciara y también migrara datos. Podemos automatizarlo actualizando package.jsoncon esto:

"scripts": {  "migrate": " sequelize db:migrate",  "dev": "nodemon src/server --exec babel-node -e js",  "start": "node src/server",  "test": "echo "Error: no test specified""  exit 1""}

No related posts.

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion