Nest.js Paso a Paso: Añadir Sistema de Usuarios

En el tutorial anterior construimos un blog básico que permite crear artículos pero no incluye ningún mecanismo de autenticación, por lo que cualquiera podía crear o eliminar entradas. En esta guía vamos a añadir progresivamente un sistema de usuarios y autenticación para proteger la aplicación. Empezamos explicando métodos de autenticación y luego implementamos un sistema de registro y validación de inicio de sesión con Nest.js.
Métodos de autenticación comunes en desarrollo web: Token based como JWT y Session based con cookies. JWT genera un token tras el login que el cliente envía en cada petición; es útil en arquitecturas distribuidas porque el servidor no mantiene estado de sesión. Session cookie crea una sesión en el servidor y devuelve un identificador en una cookie que el navegador envía automáticamente, lo que permite al servidor localizar la sesión almacenada. Para este proyecto elegimos Session cookie por ser la opción más directa y clásica para aplicaciones con arquitectura tradicional y porque Nest.js ofrece buen soporte para sesiones.
Crear módulo de usuarios. Con Nest CLI genera los artefactos básicos: nest generate module users nest generate controller users nest generate service users. Crea un archivo user.entity.ts en src/users con campos id tipo UUID, username y password. Registra TypeOrmModule en users.module para trabajar sobre la entidad User y exporta UsersService para que pueda usarse desde otros módulos como auth. En la base de datos PostgreSQL crea la tabla de usuarios, por ejemplo con la sentencia SQL CREATE TABLE user ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), username VARCHAR UNIQUE NOT NULL, password VARCHAR NOT NULL );
Registro de usuarios. Antes de almacenar contraseñas hay que cifrarlas. Instala bcrypt con npm install bcrypt y las definiciones de tipo con npm install -D @types/bcrypt. En UsersService implementa un método create que reciba los datos, aplique bcrypt hash con saltRounds 10 y guarde el nuevo usuario en la base de datos, y un método findOne que busque por username.
Módulo de autenticación y validación. Genera el módulo y servicio con nest generate module auth y nest generate service auth. Implementa en AuthService un método validateUser que consulte UsersService para obtener el usuario y compare la contraseña con bcrypt compare. Si la validación es correcta devuelve los datos del usuario sin la contraseña, en caso contrario devuelve null.
Vistas de registro y login. Crea plantillas register.ejs y login.ejs con formularios para username y password que realicen POST a users/register y auth/login respectivamente. En el controlador de usuarios muestra la vista de registro con una ruta GET register y procesa la sumisión con POST register invocando UsersService.create y redirigiendo a auth/login al completar el registro.
En auth.controller implementa GET login para mostrar la vista y POST login que use AuthService.validateUser. Si la validación falla devuelve un error 401 Unauthorized, si tiene éxito redirige a la página principal de posts. Este flujo permite verificar credenciales pero aún no mantiene una sesión persistente en el servidor; eso lo abordaremos en el siguiente artículo añadiendo gestión de sesiones y restricciones de acceso según permisos.
Integración final. Importa UsersModule y AuthModule en AppModule para que el sistema esté disponible en la aplicación. Arranca el proyecto con npm run start:dev y prueba registrar un usuario en http://localhost:3000/users/register y luego iniciar sesión en http://localhost:3000/auth/login. Si introduces credenciales incorrectas verás un 401 Unauthorized, y si todo es correcto serás redirigido a la lista de posts.
Sobre Q2BSTUDIO. En Q2BSTUDIO somos una empresa de desarrollo de software a medida y aplicaciones a medida que combina experiencia en desarrollo backend y frontend con especialización en inteligencia artificial y ciberseguridad. Ofrecemos servicios cloud en AWS y Azure, soluciones de inteligencia de negocio y desarrollo de agentes IA para empresas. Si necesitas un proyecto a medida para tu negocio consulta nuestros servicios de desarrollo en el enlace a la landing de desarrollo de aplicaciones desarrollo de aplicaciones y software multiplataforma y descubre nuestras capacidades en inteligencia artificial en soluciones de IA para empresas.
Palabras clave incluidas para mejorar posicionamiento: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi. En próximos capítulos implementaremos persistencia de sesión con cookies, protección de rutas mediante guards y autorización por roles, además de integrar mejores prácticas de seguridad como el almacenamiento seguro de cookies, regeneración de identificadores de sesión y protección CSRF. Si quieres que adaptemos este flujo a un proyecto real, en Q2BSTUDIO podemos diseñar e implementar la solución completa, desde la arquitectura hasta el despliegue y monitoreo en la nube.
Lecturas relacionadas y siguientes pasos: en el siguiente artículo completaremos la autenticación con sesiones y mostraremos cómo restringir acceso a páginas y funcionalidades en función del usuario autenticado. Mientras tanto puedes explorar nuestras otras soluciones de Business Intelligence con Power BI para explotar los datos de tus aplicaciones y obtener informes accionables.
Comentarios