Autenticação com Node.js e Express

A autenticação é uma parte muito importante de praticamente qualquer aplicação. Esse post explica como autenticar usuários num servidor Node.js, utilizando o framework Express, e armazenando as sessões com Redis.

Configurando a Sessão

Para autenticar usuários, devemos, antes, configurar corretamente a sessão do Express. Para isso, primeiro, instale o pacote express_session através do comando

A seguir, você deve configurar o pacote instalado, como abaixo.

Dessa forma, quando uma requisição estiver sendo atendida, as informações da sessão pode ser acessadas (ou alteradas) por meio do objeto req.session.

Tentativa de Login

Assim, a rotina de login do blog ficou como abaixo.

 

Para os dados enviados via POST possam ser acessados da forma acima, devemos utilizar o pacote body-parser, adicionando as linhas

 

à rotina de inicialização do Express.

Protegendo a senha do Usuário

Muito já foi discutido sobre o porquê de criptografar todas as senhas salvas no banco de dados. Em resumo, se alguém mal intencionado tiver acesso ao banco de dados, ele, no mínimo, terá muito trabalho para descobrir as senhas cadastradas se elas estiverem criptografadas. Como muitas pessoas utilizam as mesmas senhas em vários serviços, isso é muito importante.

Para a criptografia, utilizei o pacote bcrypt. É uma boa prática utilizar uma string de salt para cada usuário. Isso se deve ao fato de que muitos usuários utilizam senhas iguais, como12345678 ou password. Assim, se todos eles utilizarem a mesma string de salt, um usuário com acesso ao banco de dados poderia procurar por senhas repetidas e fazer algumas tentativas com senhas comuns para recuperar as senhas originais.

Para utilizar o bcrypt no windows, precisei instalar o Visual Studio. Uma versão gratuita pode ser baixada aqui.

Assim, minha função de login consiste dos seguintes passos:

  1. Verifica se há algum usuário com o e-mail informado pelo usuário;
  2. Obtém a string de salt desse usuário;
  3. Criptografa a senha informada pelo usuário com o salt obtido;
  4. Verifica se essa senha pertence à conta correspondente ao e-mail informado.

A implementação da rotina segue abaixo.

 

2 pensamentos em “Autenticação com Node.js e Express”

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *