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

Página 58

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.

Now answer the exercise about the content:

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

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

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

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text