En este laboratorio vamos a construir una API mínima con autenticación basada en cookies utilizando sesiones. Usaremos express-session para manejar las sesiones y connect-mongo para almacenarlas en MongoDB.
Implementar autenticación de usuarios en una API REST utilizando cookies de sesión y proteger los recursos privados (como tareas) para que sólo los usuarios autenticados puedan acceder a ellos.
Debe tener los siguientes campos:
username(string, único)password(string, encriptado conbcryptjs)
- Método:
POST /users - Descripción: Crea un nuevo usuario. Cualquier usuario puede acceder a este endpoint.
- Antes de guardar, el
usernamedebe ser único. - La contraseña debe almacenarse encriptada usando
bcryptjs.
- Antes de guardar, el
- Método:
POST /sessions - Descripción: Valida las credenciales (
usernameypassword) y si son correctas, crea una sesión con eluserIdy devuelve una cookie de sesión al cliente y el usuario autenticado.
- Método:
DELETE /sessions - Descripción: Destruye la sesión activa y elimina la cookie del cliente.
Debe contener los siguientes campos:
name(string)owner(referencia al modeloUser)
- Método:
POST /tasks - Descripción: Requiere autenticación. Crea una nueva tarea asignada al usuario autenticado.
- Método:
GET /tasks - Descripción: Requiere autenticación. Devuelve solo las tareas pertenecientes al usuario autenticado.
- Las contraseñas nunca deben almacenarse en texto plano. Usa
bcryptjspara encriptarlas. - Protege los endpoints
/taskscon middleware de autenticación que verifique la sesión activa. - Asegúrate de configurar correctamente las cookies de sesión:
- Usa
httpOnly: truepara evitar acceso desde el navegador. - En producción, considera usar
secure: true.
- Usa
expressmongooseexpress-sessionconnect-mongo