Autenticación
En este capitulo vamos a ver cómo almacenar las contraseñas de los usuarios, y cómo identificar las peticiones HTTP.
Recuerda que HTTP es un protocolo sin estado, lo que quiere decir que el servidor Web no mantiene un registro de quién está visitando una página.
Almacenando las contraseñas
Para almacenar las contraseñas en la base de datos se recomienda utilizar un paquete llamado bcrypt para encriptar las contraseñas.
El primer paso es instalar el paquete con npm o Yarn. Por ejemplo con Yarn:
Para encriptar una contraseña utiliza el método hash
:
Para verificar si una contraseña es correcta utiliza el método compare
:
Identificando las peticiones
Para identificar las peticiones debemos guardar el id
del usuario en la sesión cuando este se autentique.
El primer paso es asegurarte que hayas instalado y configurado la librería cookie-session como se muestra en el capítulo de Cookies y sesión de Express I.
El siguiente paso es agregar el id
del usuario a la sesión. Por ejemplo, si tu ruta de autenticación es POST /login
y si estás utilizando Mongoose:
El método authenticate
del modelo User
sería el siguiente:
bcrypt no soporta aún async/await
así que en la línea 9 estamos envolviendo el código que hace la verificación en una promesa.
Por último, para identificar las peticiones HTTP creamos un middleware que verifica si la sesión tiene un userId
y carga al usuario:
Ahora, en todas las rutas que requieran autenticación podemos agregar este middleware. Por ejemplo:
Para ver un ejemplo completo de autenticación de usuarios con Express.js y MongoDB te recomendamos ver la aplicación que se encuentra en este repositorio de Github.
Last updated