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

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:
- El usuario se registra mediante contraseña y correo electrónico.
- Las credenciales del usuario se almacenan en una base de datos.
- El usuario es redirigido al inicio de sesión cuando se completa el registro.
- Al usuario se le concede acceso a recursos específicos cuando se autentica
- 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 API
getRandomValuespara 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 -yLa -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 sqlite3A continuación, agregamos Babe a nuestro entorno de desarrollo:
yarn add babel-cli babel-preset-env babel-preset-stage-0 --devAhora 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.
Si quieres conocer otros artículos parecidos a Creemos nuestra propia API de autenticación con Nodejs y GraphQL puedes visitar la categoría Tutoriales.
Deja un comentario

Contenido Relacionado