MOX
Productos
Conoce nuestros servicios adicionales
Recursos & Elementos
Volver

MOXAndrés Villalobos
09-09-2025

Tutorial Node.js + Express: Implementación de autenticación JWT en API REST

En el mundo actual del desarrollo web, las aplicaciones requieren un sistema robusto de autenticación que permita manejar de manera segura los accesos de los usuarios. En este contexto, la implementación de un sistema basado en JSON Web Tokens (JWT) se ha vuelto un enfoque popular debido a su simplicidad y eficacia. Este tutorial se enfoca en enseñarte cómo crear una API REST utilizando Node.js y Express, implementando la autenticación JWT.

¿Qué es JWT?

JSON Web Token (JWT) es un estándar abierto (RFC 7519) que define un formato compacto y autónomo para transmitir información entre partes como un objeto JSON. Esta información puede ser verificada y firmada digitalmente, lo cual lo hace ideal para la autenticación y el intercambio seguro de datos.

Requisitos Previos

Antes de iniciar, asegúrate de tener instalado Node.js en tu máquina. Adicionalmente, necesitarás algunas herramientas básicas de desarrollo:

  • Node.js: Para ejecutar JavaScript en el servidor.
  • Express: Un marco de trabajo que facilita la creación de aplicaciones web.
  • Postman o Insomnia: Para probar las solicitudes a nuestra API.
  • MongoDB: Sistema de base de datos NoSQL donde almacenaremos usuarios (opcional).

Creando el Proyecto

Primero, crea una nueva carpeta para tu proyecto y navega hacia ella desde la terminal:

$ mkdir jwt-auth-api
$ cd jwt-auth-api

A continuación, inicializa un nuevo proyecto de Node.js ejecutando el siguiente comando:

$ npm init -y

Añade las dependencias necesarias:

$ npm install express mongoose jsonwebtoken bcryptjs dotenv

Estructura del Proyecto

Crea la siguiente estructura dentro de tu carpeta del proyecto:

jwt-auth-api/
??? .env
??? app.js
??? models/
    ??? User.js

Archivo .env

Crea un archivo llamado .env para almacenar variables sensibles como la clave secreta para firmar nuestros tokens:

JWT_SECRET=myverysecuresecret

Modelo de Usuario

Crea el modelo de usuario dentro de /models/User.js. Este modelo se encargará de definir el esquema para nuestra base de datos:

const mongoose = require(mongoose);
const bcrypt = require(bcryptjs);

const UserSchema = new mongoose.Schema({
    username: { type: String, required: true },
    password: { type: String, required: true }
});

UserSchema.pre(save, async function(next) {
    if (!this.isModified(password)) return next();
    this.password = await bcrypt.hash(this.password, 10);
    next();
});

module.exports = mongoose.model(User, UserSchema);

Código Principal en app.js

A continuación, establece conexiones y define las rutas en app.js:

const express = require(express);
const mongoose = require(mongoose);
const jwt = require(jsonwebtoken);
const User = require(./models/User);
dotenv.config();

const app = express();
appp.use(express.json());
mongoose.connect(mongodb://localhost/jwt-auth, {
    useNewUrlParser: true,
    useUnifiedTopology: true,
});

app.post(/register, async (req, res) => {
    const { username, password } = req.body;
bconst user = new User({ username, password });
aawait user.save();
rres.status(201).json(user);
n});
avv.post(/login, async (req, res) => {
pconst { username, password } = req.body;
tconst user = await User.findOne({ username });
sif (!user || )) {
nres.status(401).send(Credenciales inválidas);
g}
dtkn = jwt.sign({ id: user._id }, process.env.JWT_SECRET);
sres.json({ token });
n});
dapp.listen(3000, () => {
cconsole.log(Server running on port 3000);
c});
n
"> torntorln precisaonseresi ://gómico!sublime /aptodo viogato hecho da petor desde e completori ??????c????????? enbdirémonos pconexáto o por prioreciéndo??????????



Otros artículos que te podrían interesar