Skip to content

Autenticación JWT y sesiones

Express puede usar JWT, sesiones con cookies o proveedores externos. La decisión depende del tipo de cliente y seguridad requerida.

Middleware JWT

js
function requireAuth(req, res, next) {
  const header = req.headers.authorization
  const token = header?.replace('Bearer ', '')

  if (!token) return res.status(401).json({ code: 'UNAUTHORIZED' })

  req.user = verifyToken(token)
  next()
}

Proteger ruta

js
router.get('/me', requireAuth, (req, res) => {
  res.json(req.user)
})

Sesiones

Para apps web, sesiones con cookies HttpOnly, Secure y SameSite suelen ser seguras.

Autorización

js
function requireRole(role) {
  return (req, res, next) => {
    if (!req.user?.roles?.includes(role)) return res.status(403).json({ code: 'FORBIDDEN' })
    next()
  }
}

Buenas practicas

  • HTTPS.
  • Validar expiración y firma.
  • No guardar secretos en JWT.
  • Cookies seguras si usas sesiones.
  • Permisos por recurso.