Capa do Ebook gratuito Como criar APIs em NodeJS do básico ao avançado

Como criar APIs em NodeJS do básico ao avançado

Novo curso

149 páginas

Trabalhando com rotas no ExpressJS: Trabalhando com autenticação JWT nas rotas

Capítulo 58

Tempo estimado de leitura: 3 minutos

Audio Icon

Ouça em áudio

0:00 / 0:00

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:

Continue em nosso aplicativo

Você poderá ouvir o audiobook com a tela desligada, ganhar gratuitamente o certificado deste curso e ainda ter acesso a outros 5.000 cursos online gratuitos.

ou continue lendo abaixo...
Download App

Baixar o aplicativo

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.

O middleware 'authenticateToken' extrai o token do cabeçalho de autorização, verifica sua presença e validade utilizando 'jsonwebtoken'. Se válido, adiciona o usuário ao objeto de solicitação e continua o fluxo com o 'next' middleware.

Próximo capitúlo

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

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