MOX
Produtos
Saiba mais sobre nossos serviços adicionais
Recursos e Elementos
Retornar

MOXAndrés Villalobos
13-09-2025

Tutorial Node.js: Criando uma API REST com autenticação JWT

En el mundo actual de desarrollo web, las APIs REST se han convertido en un estándar para permitir la comunicación entre diferentes aplicaciones. Node.js, gracias a su robustez y flexibilidad, es una de las plataformas más utilizadas para crear APIs eficientes y escalables. En este tutorial, nos centraremos en la creación de una API REST en Node.js que incluye autenticación utilizando JSON Web Tokens (JWT), un método seguro para transmitir información entre partes como un objeto JSON.

¿Por qué usar JWT para autenticación?

El uso de JWT para autenticación y manejo de sesiones es popular debido a su capacidad de ser auto-contenidos, lo que significa que contienen toda la información necesaria sobre el usuario. Además, son seguros porque están firmados digitalmente. Esto reduce la necesidad de almacenar información en el servidor, volviéndolos ideales para APIs escalables.

Configurando nuestro proyecto Node.js

Primero, crearemos un nuevo proyecto Node.js utilizando npm:

$ mkdir myapi && cd myapi
$ npm init -y

A continuación, instalaremos las librerías necesarias:

$ npm install express jsonwebtoken bcryptjs

Estas incluyen Express, un popular framework de Node.js; jsonwebtoken, para manejar los JWT; y bcryptjs, para encriptar contraseñas.

Creación del Servidor Básico

Abrimos nuestro archivo index.js e implementamos un servidor básico:

const express = require(express);
const app = express();
app.use(express.json());
app.listen(3000, () => console.log(Server running on port 3000));

Este código inicia un servidor en el puerto 3000 y habilita el manejo de solicitudes JSON.

Manejo de Usuarios y Seguridad

Añadiremos endpoints básicos para registrar usuarios y manejar su autenticación. Crearemos un controlador simple para ello:

// Simulación de base de datos
let users = [];

app.post(/register, async (req, res) => {
const { username, password } = req.body;
const hashedPassword = await bcrypt.hash(password, 10);
users.push({ username, password: hashedPassword });
res.status(201).send(Usuario registrado satisfactoriamente);
});

app.post(/login, async (req, res) => {
const { username, password } = req.body;
const user = users.find(user => user.username === username);

if (!user || )) {
return res.status(401).send(Credenciales incorrectas);
}

const token = jwt.sign({ username: user.username }, secretkey);
res.json({ token });
});

Asegurando nuestras Rutas con JWT

Para proteger nuestras rutas requerirá una función middleware que valide los tokens:

const authenticateJWT = (req, res, next) => {
const token = req.header(Authorization);

if (!token) return res.sendStatus(403);

jwt.verify(token.split( )[1], secretkey, (err, user) => {
if (err) return res.sendStatus(403);

req.user = user;
next();
});
};;

Luego podemos utilizar esta función en cualquier ruta que deseemos proteger.

Poniendo todo junto

Puedes ver cómo estas características combinadas permiten crear aplicaciones robustas. Al usar JWTs, no solo aseguramos nuestras rutas VPN y cifrados seguros, sino también mejoramos la experiencia del usuario al eliminar la necesidad constante de iniciar sesión.

Más sobre desarrollo con Mox aquí.

Outros artigos que podem lhe interessar