Cursos / Informática para Internet / Desenvolvimento Backend / Aula

arrow_back Aula 13 - Autenticando usuários na API

Gerando Token JWT


Agora, já conhecendo um pouco sobre o JWT, iniciaremos a implementação incrementando a rota de login.

Gerando um token JWT

No arquivo 'usuario.rota.js' existe a rota de login, que está retornando uma mensagem de sucesso ou falha. No entanto, a ideia é que ao dar tudo certo, seja retornado um token.

Para isso acontecer, antes de mais nada é preciso instalar duas bibliotecas. No terminal, digite:

npm i jsonwebtoken

e

npm i dotenv

Após isso, importe a biblioteca JWT através da linha:

const jwt = require("jsonwebtoken");

Logo em seguida, modifique a rota de login para em caso de sucesso retornar um token. Sua rota deverá ficar como abaixo:

router.post("/login", async (req, res) => {

  const email = req.body.email;
  const senha = req.body.senha;

  const usuario = await Usuario.findOne({
    where: {
      email: email,
    },
  });

  if (usuario && (await bcrypt.compare(senha, usuario.senha))) {
    const payload = {
      sub: usuario.id,
      iss: "imd-backend",
      aud: "imd-frontend",
      email: usuario.email,
    };
    const token = jwt.sign(payload, process.env.ACCESS_TOKEN_SECRET)
    res.json({ accessToken: token })
  } else {
    res.status(403).json({ msg: "usuário ou senha inválidos" })
  }
});

Essa variável de ambiente 'ACCESS_TOKEN_SECRET' precisa ser definida. Para isso, com o auxílio da biblioteca dotenv, crie um arquivo oculto '.env' e atribua um valor aleatório a ela.

Exemplo de definição:

ACCESS_TOKEN_SECRET=e74e41e5561cd01e0d2b4e0a3183f8473e5288dc43c44fe32879f61a890b2491a6484be7ea2615a49ad52476d6dd3894a0b1201e7224de07b44fb1dc590ab181

Por fim, é preciso carregar o dotenv na inicialização. Então, no arquivo 'index.js' adicione a seguinte linha nas importações:

    require('dotenv').config()

Versão 5.3 - Todos os Direitos reservados