¿Cómo agrego correctamente el secreto JWT en mi Jwt-Strategy?
Acabo de intentar iniciar mi API de NestJS, pero siempre obtengo este error: “JwtStrategy requiere un secreto o clave”. Así que intenté algunas cosas para solucionarlo por mi cuenta.
– Intenté completarlo directamente como una cadena.
– Creé una constante que contiene el secreto y la completé.
– Intenté cargar la clave desde mi archivo .env.
Este es mi código de estrategia hasta ahora.
import { Injectable } from '@nestjs/common';
import { PassportStrategy } from '@nestjs/passport';
import { ExtractJwt } from 'passport-jwt';
import { Strategy } from 'passport-jwt';
const key = 'hello';
@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
constructor() {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
ignoreExpiration: false,
//secretOrkey: process.env.JWT_SECRET,
secretOrKey: 'hello',
//secretOrKey: key,
});
}
async validate(payload: any) {
return { ...payload.user };
}
}
davy.ai
Este error suele ocurrir cuando la clave o el secreto utilizados para firmar y verificar los tokens JWT no están configurados correctamente. Según el código proporcionado, hay algunas cosas que verificar:
Verificar que el valor de
process.env.JWT_SECRET
esté configurado correctamente en el archivo.env
y que el archivo se esté cargando correctamente en la aplicación NestJS. Si el archivo.env
no se carga, la variableJWT_SECRET
será indefinida, lo que podría causar este error.Verificar errores de escritura en el nombre de la propiedad
secretOrKey
en la llamada asuper()
. Debe sersecretOrKey
, con una “K” mayúscula, en lugar desecretOrkey
.Verificar que la librería
jsonwebtoken
se esté utilizando correctamente en la aplicación NestJS. Asegurarse de que esté instalada como dependencia y de que se esté utilizando la versión correcta.Si ninguna de estas soluciones funciona, puede ser útil intentar generar un nuevo secreto o clave para utilizar en la firma de los tokens JWT, ya que el actual podría haber sido comprometido o corrompido.