7.5. Trabalhando com rotas no ExpressJS: Trabalhando com rotas de autenticação

Página 51

Trabalhar com rotas no ExpressJS é uma parte essencial do desenvolvimento de APIs em NodeJS. Neste capítulo, vamos focar especificamente em rotas de autenticação, um componente crucial para a segurança e funcionalidade de qualquer aplicação.

O ExpressJS é um framework para NodeJS que fornece uma maneira robusta e fácil de criar servidores web. Uma das características mais poderosas do ExpressJS é o seu sistema de roteamento. As rotas são a maneira como o servidor responde a solicitações específicas de clientes. Na prática, você define rotas para diferentes URLs e diferentes métodos HTTP (GET, POST, DELETE, etc.), e então define o que o servidor deve fazer quando essas solicitações são recebidas.

As rotas de autenticação são um tipo especial de rota que são usadas para verificar a identidade de um usuário. Essas rotas geralmente exigem que o usuário forneça algum tipo de credencial, como um nome de usuário e senha, e então o servidor verifica se essas credenciais são válidas. Se forem, o servidor pode fornecer ao usuário um token de autenticação, que o usuário pode então usar para fazer solicitações autenticadas para outras rotas.

Para começar a trabalhar com rotas de autenticação, primeiro precisamos instalar alguns pacotes adicionais. O 'bcrypt' é um pacote que nos permite criptografar senhas, o que é uma prática essencial de segurança. O 'jsonwebtoken' é um pacote que nos permite criar e verificar tokens de autenticação. Você pode instalar esses pacotes usando o npm, o gerenciador de pacotes do NodeJS.

npm install bcrypt jsonwebtoken

Uma vez que esses pacotes estão instalados, podemos começar a criar nossa rota de autenticação. Vamos começar definindo uma nova rota POST para '/auth'. Esta rota será usada para autenticar usuários. Nesta rota, vamos primeiro verificar se o usuário forneceu um nome de usuário e senha. Se não, vamos retornar um erro. Se sim, vamos verificar se essas credenciais são válidas.

const express = require('express');
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');

const router = express.Router();

router.post('/auth', async (req, res) => {
  const { username, password } = req.body;

  if (!username || !password) {
    return res.status(400).json({ error: 'Username and password are required' });
  }

  // Check if the credentials are valid...
});

Para verificar se as credenciais são válidas, precisamos primeiro buscar o usuário no nosso banco de dados. Se o usuário não existir, retornamos um erro. Se o usuário existir, usamos o bcrypt para comparar a senha fornecida com a senha criptografada armazenada no banco de dados. Se a senha for válida, criamos um token de autenticação usando o jsonwebtoken e o retornamos para o usuário.

// Check if the credentials are valid...
const user = await User.findOne({ username });

if (!user) {
  return res.status(400).json({ error: 'Invalid username or password' });
}

const validPassword = await bcrypt.compare(password, user.password);

if (!validPassword) {
  return res.status(400).json({ error: 'Invalid username or password' });
}

const token = jwt.sign({ id: user._id }, 'secret', { expiresIn: '1h' });

res.json({ token });

Esta é a base para trabalhar com rotas de autenticação no ExpressJS. No entanto, há muitos outros detalhes que você pode querer considerar, como lidar com tokens de atualização, bloquear rotas com middleware de autenticação, e assim por diante. No entanto, espero que esta introdução tenha lhe dado uma boa visão geral do processo e o encorajado a explorar mais o assunto.

Now answer the exercise about the content:

Qual é a função das rotas de autenticação no ExpressJS e como elas são implementadas?

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

You missed! Try again.

Next page of the Free Ebook:

527.6. Trabalhando com rotas no ExpressJS: Criando rotas para CRUD

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