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

Página 40

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.

Now answer the exercise about the content:

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

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

You missed! Try again.

Next page of the Free Ebook:

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

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