Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[HELP] NodeJs + Typescript + Jwt Auth

To com o seguinte problema quando tento fazer uma auth usando o passport com a estrategia bearer... O meu payload não devolve o ID do usuario no momento em que faco o jwt.verify... Trechos do codigo abaixo:

Cria o token jwt

function createTokenJwt(user: User) {
  const payload = { id: user.id };
  const token = jwt.sign(payload, 'secret', { expiresIn: '1d' });
  return token;
}

Login

  async login(user: User) {
    const checkedUser = await getRepository(User).findOne({ where: { email: user.email } });
    const token = createTokenJwt(user);
    return { checkedUser, token };
  }

Bearer

passport.use(
  new bearerStrategy(
    async (token, done) => {
      const payload = jwt.verify(token, 'secret');
      console.log(payload);
    }
  )
);

Resultado do console.log

{ iat: 1606093364, exp: 1606179764 }
1 resposta
solução!

Revisando o codigo com calma pude perceber que o payload não estava incluindo o ID do usuario. Organizei novamente e consegui fazer com que o ID do usuario fosse adicionado. Em seguida tive um problema para poder recuperar o ID no payload na estrategia bearer. O id não estava sendo reconhecido. Então tive que criar uma interface e também desestruturei o objeto para pegar apenas o valor que me interessava.

interface IToken {
  id: number,
  iat: number,
  exp: number
}

passport.use(
  new bearerStrategy(
    async (token, done) => {
      try {
        const payload = jwt.verify(token, 'secret');
        const { id } = payload as IToken;
        const usuario = await UserController.getUserById(id);
        done(null, usuario);
      } catch (error) {
        done(error);
      }
    }
  )
);

Console.log

{ id: 1, iat: 1606097772, exp: 1606184172 }