7.12 Trabalhando com Rotas no ExpressJS: Trabalhando com Autenticação JWT nas Rotas

ExpressJS é uma estrutura de aplicação web para Node.js que fornece uma maneira robusta de criar servidores web e APIs. Um dos principais conceitos ao trabalhar com ExpressJS é o conceito de rotas. As rotas são o caminho que o servidor deve seguir para responder a uma solicitação específica do cliente.

Para proteger as rotas e garantir que apenas usuários autenticados possam acessá-las, podemos usar a autenticação JWT (JSON Web Token). JWT é um padrão (RFC 7519) que define uma maneira compacta e segura de transmitir informações entre partes como um objeto JSON. Essas informações podem ser verificadas e confiáveis porque são assinadas digitalmente.

Implementando a Autenticação JWT nas Rotas

Para implementar a autenticação JWT nas rotas do ExpressJS, primeiro precisamos instalar o pacote 'jsonwebtoken' usando o npm (Node Package Manager). O comando para instalar este pacote é 'npm install jsonwebtoken'.

Em seguida, precisamos criar um middleware que verifique o token JWT em cada solicitação. Um middleware é uma função que tem acesso ao objeto de solicitação (req), ao objeto de resposta (res) e à próxima função de middleware no ciclo de solicitação/resposta do aplicativo. A próxima função de middleware é comumente denotada por uma variável chamada 'next'.

Aqui está um exemplo de como um middleware de autenticação JWT pode ser:

const jwt = require('jsonwebtoken');

function authenticateToken(req, res, next) {
  const authHeader = req.headers['authorization'];
  const token = authHeader && authHeader.split(' ')[1];

  if (token == null) return res.sendStatus(401); // se não há token, retorna um erro 401

  jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
    if (err) return res.sendStatus(403); // se o token é inválido, retorna um erro 403
    req.user = user;
    next(); // passa a execução para o próximo middleware
  });
}

O middleware 'authenticateToken' extrai o token do cabeçalho de autorização da solicitação, verifica se o token está presente e, em seguida, verifica se o token é válido usando a função 'verify' do pacote 'jsonwebtoken'. Se o token for válido, ele adiciona o usuário ao objeto de solicitação e passa a execução para o próximo middleware.

Agora, para proteger uma rota com este middleware, tudo o que precisamos fazer é adicionar 'authenticateToken' como um argumento para a função de rota, como neste exemplo:

app.get('/protected', authenticateToken, (req, res) => {
  res.send('Esta é uma rota protegida');
});

Neste exemplo, a rota '/protected' só pode ser acessada se o cliente enviar um token JWT válido no cabeçalho de autorização da solicitação.

Conclusão

Trabalhar com rotas no ExpressJS é uma parte fundamental do desenvolvimento de APIs. A adição de autenticação JWT às rotas permite proteger certas partes da API e garantir que apenas usuários autenticados possam acessá-las. Embora a implementação da autenticação JWT possa parecer complexa no início, ela se torna bastante direta uma vez que você entende os conceitos básicos de como os tokens JWT e os middlewares funcionam.

Esperamos que este capítulo tenha fornecido uma visão clara de como trabalhar com rotas e autenticação JWT no ExpressJS. No próximo capítulo, vamos explorar mais recursos avançados do ExpressJS e como eles podem ser usados para criar APIs mais robustas e seguras.

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

Qual é a função do middleware 'authenticateToken' na implementação da autenticação JWT nas rotas do ExpressJS?

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

Você errou! Tente novamente.

Imagem do artigo Trabalhando com rotas no ExpressJS: Trabalhando com autorização nas rotas

Próxima página do Ebook Gratuito:

59Trabalhando com rotas no ExpressJS: Trabalhando com autorização nas rotas

3 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

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

Cursos gratuitos em
vídeo, áudio e texto