Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

264
Views
Atascado en JWT verificar (con Redis)

Estoy usando Node.js más un paquete llamado jwt-redis para crear y verificar tokens de autenticación en mi API, de esta manera puedo destruirlos de redis db y cerrar sesión.

Ya logré la primera parte, la creación de tokens a través del método jwtr.sign(). El token se crea con éxito a partir de una carga útil y un secreto y luego se incluye en el cuerpo de la respuesta, así como una nueva clave en redis.

Ahora, estoy tratando de implementar una función para autenticar el token, que principalmente obtiene el encabezado de autorización de las solicitudes (se imprime correctamente en la consola), conecta el cliente redis (aparentemente también está bien) y finalmente intenta verificarlo.

Mi código es el siguiente:

 async function authenticateToken(req, res, next) { // verify if user already exists const authHeader = req.header('Authorization') // console.log('autheader', authHeader) const token = authHeader && authHeader.split(' ')[1] //returns or undenifed or the token if (token == null) return res.status(401).json({ Error: 'Usuario no registrado' }) console.log('token:' + token) const redis = require('redis'); const JWTR = require('jwt-redis').default; //ES6 import JWTR from 'jwt-redis'; const redisClient = redis.createClient(); const jwtr = new JWTR(redisClient) await redisClient.connect().then(function() { console.log("Redis plugged in.") }) jwtr.verify(token, process.env.ACCESS_TOKEN_SECRET, function(err, user) { if(err) return res.status(401).json({ Error: 'Usuario no registrado' }) console.log('user'+user) req.USER = user next() }) }

Sin embargo, como se dijo, se atasca en jwtr.verify(). La consola imprime tanto el token como el mensaje "Redis conectado", pero no sucede nada más. La aplicación sigue ejecutándose y el botón de la llamada del cartero sigue siendo "Enviando" hasta que obligo a detener el nodo.

Como ese método devuelve una promesa, lo intenté con ambos then y await sin éxito.

¿Alguna idea de lo que está pasando aquí, chicos?

Realmente apreciaré tu ayuda :)

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

de la documentación

jwtr.verify(token, secretOrPublicKey, [opciones]): Promesa

usted está manejando eso con devolución de llamada

entonces creo que tienes que modificar tu código de esta manera

 jwtr.verify(token, process.env.ACCESS_TOKEN_SECRET).then(user => { console.log('user'+user) req.USER = user next() }, err => { res.status(401).json({ Error: 'Usuario no registrado' }) })
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!