JSON Web Tokens (JWT) é uma maneira segura e eficiente de transmitir informações entre partes como um objeto JSON. Essas informações podem ser verificadas e confiáveis porque são assinadas digitalmente. JWTs podem ser assinados usando um segredo (com o algoritmo HMAC) ou um par de chaves pública/privada usando RSA ou ECDSA.

Quando você está desenvolvendo uma aplicação web com NodeJS, pode ser necessário armazenar um JWT em um cookie. Isso pode ser útil para manter um usuário autenticado entre as sessões. Aqui está uma visão geral de como você pode fazer isso.

Instalando as Dependências Necessárias

Antes de começar a trabalhar com JWTs, você precisa instalar algumas dependências. Você precisará do pacote 'jsonwebtoken' para criar e verificar JWTs. Você também precisará do pacote 'cookie-parser' para trabalhar com cookies. Você pode instalar essas dependências usando o npm (Node Package Manager):

npm install jsonwebtoken cookie-parser

Criando um JWT

Depois de instalar as dependências necessárias, você pode criar um JWT. Aqui está um exemplo de como você pode fazer isso:

const jwt = require('jsonwebtoken');

let payload = {
  id: user.id,
  email: user.email
};

let secret = 'your-secret-key';

let token = jwt.sign(payload, secret);

Neste exemplo, o payload é um objeto que contém informações sobre o usuário. O segredo é uma string que é usada para assinar o token. O método 'sign' retorna o token JWT.

Armazenando um JWT em um Cookie

Depois de criar um JWT, você pode armazená-lo em um cookie. Aqui está um exemplo de como você pode fazer isso:

const cookieParser = require('cookie-parser');

app.use(cookieParser());

app.get('/login', (req, res) => {
  res.cookie('token', token, { httpOnly: true });
  res.json({ token });
});

Neste exemplo, o método 'cookie' é usado para criar um novo cookie. O primeiro argumento é o nome do cookie, o segundo argumento é o valor do cookie (o JWT), e o terceiro argumento é um objeto de opções. A opção 'httpOnly' é definida como true para evitar que o cookie seja acessado através de scripts do lado do cliente.

Verificando um JWT

Depois de armazenar um JWT em um cookie, você pode verificar o JWT. Aqui está um exemplo de como você pode fazer isso:

app.get('/profile', (req, res) => {
  let token = req.cookies.token;

  if (!token) {
    return res.status(401).json({ message: 'Unauthorized' });
  }

  jwt.verify(token, secret, (err, decoded) => {
    if (err) {
      return res.status(401).json({ message: 'Unauthorized' });
    }

    res.json({ user: decoded });
  });
});

Neste exemplo, o JWT é extraído do cookie. Se o JWT não estiver presente, a resposta será uma mensagem de 'Não autorizado'. Se o JWT estiver presente, ele será verificado usando o método 'verify'. Se a verificação for bem-sucedida, a resposta será o payload decodificado.

Conclusão

Trabalhar com JSON Web Tokens em NodeJS pode parecer complicado no início, mas uma vez que você entenda os conceitos básicos, você verá que é uma maneira poderosa e flexível de lidar com a autenticação e a autorização. Lembre-se de que é importante proteger o seu segredo e de configurar as suas opções de cookie corretamente para garantir a segurança da sua aplicação.

Espero que este tutorial tenha sido útil para você entender como trabalhar com JWTs em NodeJS e como armazená-los em cookies. Se você seguir as etapas descritas neste tutorial, você será capaz de criar, armazenar e verificar JWTs com sucesso na sua aplicação NodeJS.

Agora responda o exercício sobre o conteúdo:

O que é necessário para criar um JWT em uma aplicação NodeJS?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Trabalhando com JSON Web Tokens (JWT) em NodeJS: Como proteger rotas com JWT em NodeJS 114

Próxima página do Ebook Gratuito:

Trabalhando com JSON Web Tokens (JWT) em NodeJS: Como proteger rotas com JWT em NodeJS

Tempo estimado de leitura: 4 minutos

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.

+ de 9 milhões
de alunos

Certificado grátis e
válido em todo o Brasil

60 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, ebooks e audiobooks