5.9. Criando um servidor básico com NodeJS: Validação e autenticação de requisições

NodeJS é uma plataforma poderosa para criar aplicações web. Nesta seção, vamos explorar como criar um servidor básico com NodeJS, focando especificamente na validação e autenticação de requisições. Isso é fundamental para garantir a segurança e a integridade dos dados em sua aplicação.

Criando um servidor básico

Para começar, vamos criar um servidor HTTP básico com NodeJS. Primeiro, você precisa instalar o NodeJS e o npm (Node Package Manager) em seu computador. Uma vez instalado, você pode criar um novo arquivo JavaScript, digamos server.js, e adicionar o seguinte código:


const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
});

server.listen(3000, '127.0.0.1', () => {
    console.log('Server listening on port 3000');
});

Este código cria um servidor HTTP que escuta na porta 3000 e responde com "Hello World" para todas as requisições. Para iniciar o servidor, você pode executar o comando node server.js no terminal.

Validação de requisições

A validação de requisições é uma parte crucial de qualquer aplicação web. Ela garante que os dados recebidos do cliente estão no formato correto e cumprem todas as regras de negócio. Para adicionar a validação de requisições em nosso servidor, podemos usar uma biblioteca chamada joi. Primeiro, instale-a com o comando npm install joi e, em seguida, importe-a em seu arquivo server.js:


const Joi = require('joi');

Agora, você pode definir um esquema de validação para suas requisições. Por exemplo, se você estiver criando uma API para um blog, pode querer validar as requisições de postagem de blog assim:


const schema = Joi.object({
    title: Joi.string().min(3).max(30).required(),
    content: Joi.string().min(5).required(),
});

Este esquema define que o título da postagem do blog deve ser uma string com no mínimo 3 e no máximo 30 caracteres, e o conteúdo da postagem deve ser uma string com no mínimo 5 caracteres. Você pode usar este esquema para validar as requisições assim:


const validation = schema.validate(req.body);
if (validation.error) {
    res.status(400).send(validation.error.details[0].message);
    return;
}

Autenticação de requisições

A autenticação é outra parte crucial de qualquer aplicação web. Ela garante que apenas usuários autorizados possam acessar certos recursos. Para adicionar a autenticação ao nosso servidor, podemos usar uma biblioteca chamada passport. Primeiro, instale-a com o comando npm install passport e, em seguida, importe-a em seu arquivo server.js:


const passport = require('passport');

O Passport suporta muitas estratégias de autenticação, como autenticação local, OAuth e JWT. Para este exemplo, vamos usar a autenticação local. Primeiro, precisamos configurar o Passport:


passport.use(new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function (err, user) {
      if (err) { return done(err); }
      if (!user) { return done(null, false); }
      if (!user.verifyPassword(password)) { return done(null, false); }
      return done(null, user);
    });
  }
));

Este código configura o Passport para usar a estratégia local. Ele tenta encontrar um usuário com o nome de usuário fornecido e verifica a senha. Se a senha estiver correta, o usuário é autenticado.

Para proteger uma rota com autenticação, você pode usar o método authenticate do Passport:


app.post('/login', passport.authenticate('local', { successRedirect: '/',
                                                    failureRedirect: '/login' }));

Este código protege a rota /login com autenticação local. Se a autenticação for bem-sucedida, o usuário é redirecionado para a rota /. Se falhar, o usuário é redirecionado para a rota /login.

Em resumo, a criação de um servidor básico com NodeJS envolve a configuração do servidor, a validação de requisições e a autenticação de usuários. A validação garante que os dados recebidos estão no formato correto, enquanto a autenticação garante que apenas usuários autorizados possam acessar certos recursos.

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

Qual é o propósito da validação de requisições em uma aplicação web criada com NodeJS?

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

Você errou! Tente novamente.

Imagem do artigo Criando um servidor básico com NodeJS: Armazenamento de dados em bancos de dados

Próxima página do Ebook Gratuito:

41Criando um servidor básico com NodeJS: Armazenamento de dados em bancos de dados

5 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