es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

TypeError: JwtStrategy requiere de un secreto o clave, se ejecuta en Windows pero no en Mac.

Estoy tratando de usar Passport para mi código de JavaScript. Sin embargo, obtengo un error que dice “JwtStrategy requiere una clave secreta o una llave”. Estoy colaborando con mi amigo en esto. Mientras que el suyo funciona bien, el mío no lo hace y no estoy seguro(a) de por qué. Él usa Windows mientras que yo uso una Mac, para referencia.

Nuestro código para jwt.js:

const JwtStrategy = require('passport-jwt').Strategy;
const ExtractJwt = require('passport-jwt').ExtractJwt;

const User = require("./models/user");

const opts = {}
opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
opts.secretOrKey = process.env.JWT_SECRET_KEY;

module.exports = new JwtStrategy(opts, async (jwtPayload, done) => {
  const user = await User.findOne({email: jwtPayload.email});
  if (!user) {
    return done(null, false)
  }
  return done(null, user);
}) 

El mensaje de error:

TypeError: JwtStrategy requiere una clave secreta o una llave
at new JwtStrategy (/Users/editedUser/Desktop/frods/server/node_modules/passport-jwt/lib/strategy.js:45:15)
at Object.<anonymous> (/Users/editedUser/Desktop/frods/server/jwt.js:10:18)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Module.require (internal/modules/cjs/loader.js:952:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (/Users/editedUser/Desktop/frods/server/app.js:9:17)
at Module._compile (internal/modules/cjs/loader.js:1063:30)

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “JwtStrategy requiere un secreto o una clave” generalmente se debe a que no se establece el valor de opts.secretOrKey en el archivo jwt.js. Este valor debe ser establecido como una cadena que represente tu clave secreta JWT, la cual debe mantenerse privada.

    En el código proporcionado, el valor de opts.secretOrKey se establece como process.env.JWT_SECRET_KEY. Esto significa que se espera que el valor se encuentre almacenado en una variable de entorno en el sistema donde se ejecuta el código. Es posible que la variable de entorno no esté configurada en tu sistema Mac, lo cual ocasionaría este error.

    Para resolver este problema, puedes intentar establecer directamente el valor de opts.secretOrKey en el archivo jwt.js como una cadena que represente tu clave secreta JWT. Si necesitas almacenar la clave secreta de manera segura, puedes utilizar un paquete como dotenv para cargar la clave desde un archivo .env.

    También es posible que haya una diferencia en las versiones de las dependencias utilizadas entre tu sistema y el sistema de tu amigo, lo que podría causar diferentes comportamientos. Puedes intentar verificar las versiones de passport-jwt y las dependencias relacionadas para asegurarte de que sean consistentes en ambos sistemas.

Comments are closed.