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

215
Views
¿Por qué req.params.id devuelve "indefinido"?

Aprendiendo sobre el concepto de microservicios en Nodejs, configuré dos microservicios de autenticación y usuarios , ambos independientes y ejecutándose en diferentes puertos.

El servicio de autenticación maneja la creación de usuarios y los usuarios que inician sesión con un nombre de usuario y una contraseña. Esto funciona como se esperaba. He usado jwt para generar los tokens. Puedo crear fácilmente un usuario, crear un token de sesión y verificar su validez.

Mi segundo servicio, usuarios, tengo la intención de usarlo para mostrar saludos a los usuarios y obtener los detalles de un usuario. Necesito usar el servicio de autenticación para saber cuándo un usuario inició sesión en esta configuración.

Sin embargo, con mi funcionamiento actual, cuando trato de ir a un punto final, /users/:id/sayhello con una identificación de usuario válida y un token válido pasado en los encabezados, obtengo los siguientes errores:

TypeError: Cannot read properties of undefined (reading 'id') at /path/auth/verifyToken.js:23:21 .

Y luego esto; de jwt:

 { "name": "JsonWebTokenError", "message": "secret or public key must be provided" }

Veamos mi configuración ahora.

Aquí está mi archivo verificarToken.js del servicio de autenticación :

 const verifyToken = (req, res, next)=>{ const authHeader = req.headers.token // split the header, and get the token "Bearer token" const token = authHeader.split(" ")[1]; if (authHeader) { jwt.verify(token, process.env.JWT_SEC, (err, user)=>{ if (err) res.status(403).json(err); req.user = user next(); }) } else { return res.status(401).json("You are not authenticated") } } const verifyTokenAndAuthorization = (req, res, next) =>{ verifyToken(req, res, ()=>{ if(req.user.id === req.params.id){ // error traced back to this line next(); }else{ res.status(403).json("Permission denied!"); } }) }

De mi servicio de usuarios , aquí está el código que usa el servicio de autenticación para saber cuándo el usuario está conectado y luego decir hola.

 app.get("/users/:id/sayhello", verifyTokenAndAuthorization, async (req, res) => { try { const user = await User.findById(req.params.id); console.log(req.params.id) // undefined res.status(200).json(`Hello ${user.username}`); } catch (error) { res.status(500).json(error); } });

He buscado sin éxito ninguna pista de publicaciones similares como A , B y C

No estoy seguro de lo que no está bien. Apreciaré posibles sugerencias y pistas para solucionarlo.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

console.log(process.env.JWT_SEC)

El proceso de autenticación falló, por lo que la propiedad del usuario no se estableció en el objeto req, por lo que req.user es null . Asegure la integridad de sus entradas.

over 4 years ago · Santiago Trujillo 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!