Este desafío de programación consiste en crear un inicio de sesión que utilice JWT para autenticar a los usuarios en el lado del servidor utilizando Express y PostgreSQL. Además, se debe verificar la validez del JWT utilizando Thunder Client o cualquier otra herramienta similar.
- JavaScript
- Express
- PostgreSQL
- JWT
- Crea una base de datos en PostgreSQL con el nombre "users" y una tabla con el nombre "users". La tabla deberá tener los siguientes campos:
id (INTEGER, PRIMARY KEY, AUTO_INCREMENT)
email (VARCHAR(255), UNIQUE, NOT NULL)
password (VARCHAR(255), NOT NULL)
- Instala los siguientes paquetes npm:
npm install express pg jsonwebtoken
-
Crea un archivo index.js en el directorio raíz de tu proyecto.
-
En el archivo index.js, crea una instancia de Express y configúrala para que use el middleware express.json().
-
Conéctate a la base de datos PostgreSQL utilizando el paquete pg.
-
Crea dos rutas en tu servidor Express: /signup y /login.
-
En la ruta /signup, crea un endpoint POST que reciba una solicitud con los campos email y password. Verifica que el correo electrónico no exista en la base de datos y, si es así, hasheé la contraseña y guárdala junto con el correo electrónico en la tabla users. Luego, crea y firma un JWT que contenga el ID del usuario y envíalo en la respuesta.
-
En la ruta /login, crea un endpoint POST que reciba una solicitud con los campos email y password. Verifica que el correo electrónico exista en la base de datos y que la contraseña ingresada sea correcta. Si todo es correcto, crea y firma un JWT que contenga el ID del usuario y envíalo en la respuesta.
-
Crea una función middleware que verifique la validez del JWT en cada solicitud. Si el JWT es válido, almacena el ID del usuario en req.user.
-
Agrega la función middleware creada en el paso anterior a todas las rutas que requieran autenticación.
-
Finalmente, utiliza Thunder Client o cualquier otra herramienta similar para enviar solicitudes a tus rutas /signup y /login y verificar que la autenticación funciona correctamente.