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.

Decodificación de tokens jwt.

Estoy tratando de decodificar mi token jwt que recibo cuando inicio sesión, pero devuelve ”nulo” en el console.log.

Este es el código donde estoy decodificando:

importación jwt desde 'jsonwebtoken';

función loginRequest(){
    const token = axios.post('https://afe2021fitness.azurewebsites.net/api/Users/login', 
    estado).then(data => {localStorage.setItem('jwtToken', data.data.jwt);
    console.log(data.data.jwt)});

    console.log(jwt.decode(token));
}

Y también he intentado el decodificador de la biblioteca jwt-decode sin suerte:

var decoded = jwtdecode(token);

con esto dice ”Uncaught (in promise) n {mensaje: ‘Se especificó un token no válido’}”

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema parece ser que estás intentando decodificar el token antes de que se haya recibido del servidor. La llamada axios.post devuelve una promesa, lo que significa que la variable token no contendrá el valor real del token hasta que la promesa se haya resuelto. Necesitas esperar a que la promesa se resuelva primero antes de intentar decodificar el token.

    Una forma de hacer esto es usar la sintaxis async/await:

    import jwt from 'jsonwebtoken';
    
    async function loginRequest(){
        const data = await axios.post('https://afe2021fitness.azurewebsites.net/api/Users/login', state);
        const token = data.data.jwt;
        localStorage.setItem('jwtToken', token);
        console.log(token);
    
        console.log(jwt.decode(token));
    }
    

    Alternativamente, puedes usar el método .then para esperar a que se resuelva la promesa:

    import jwt from 'jsonwebtoken';
    
    function loginRequest(){
        axios.post('https://afe2021fitness.azurewebsites.net/api/Users/login', state)
        .then(data => {
            const token = data.data.jwt;
            localStorage.setItem('jwtToken', token);
            console.log(token);
    
            console.log(jwt.decode(token));
        });
    }
    

    Con cualquiera de los métodos, deberías poder decodificar correctamente el token JWT.

Comments are closed.