Apresentação
Olá me chamo Vinicius e sou um estudante de Ciência da Computação na PUC Minas, apaixonado por desenvolvimento web.
Tenho experiência prática com MongoDB, PostgreSQL, Express, React e autenticação com JWT, adquirida por meio de projetos pessoais e estudos aplicados.
Apesar de ainda não ter atuado profissionalmente, venho me dedicando a construir soluções completas — do backend ao frontend — com foco em boas práticas e segurança.
Estou há alguns dias estudando sobre autenticação com JWT e pensei, porque não escrever um artigo simples e direto sobre o tema.
Índice
- O que é autenticação?
- Dependências iniciais
- O que é hash?
- Como funcionam as funções hash para armazenar as senhas?
- O que é JWT?
- O que são tokens?
- Criando servidor
- Configurando a conexão com o MongoDB
- Criando um modelo de usuário
- Implementando o registro e login de usuário e criando um token JWT
- Middleware para impedir duplicação de e-mail e nome de usuário
- Middleware para verificar o token JWT
- Rotas
1. O que é autenticação
De maneira bem simples, a autenticação é uma forma de reconhecer a validade de algo. Para isso, é fornecido um conjunto de credenciais, como e-mail, nome de usuário e senha. Após isso, sempre que se quiser ter acesso ao objeto protegido, verifica-se a validade dessas informações. Caso sejam válidas, o usuário tem acesso a essas informações.
2. Dependências iniciais
npm install express mongoose jsonwebtoken bcryptjs dotenv
Express: um framework para Node.js muito útil para a criação de APIs de forma simples, rápida e organizada.
Mongoose: uma ferramenta para criação de modelos de objetos MongoDB
bcryptjs: uma biblioteca para senhas hash
jsonwebtoken: uma biblioteca para trabalhar com JWTs
dotenv: uma biblioteca que permite carregar variáveis de ambiente
3. O que é hash?
Hash nada mais é do que uma mudança ou uma transformação, que pega qualquer informação (dados fornecidos), como texto, senhas, arquivos, e gera um código fixo, curto e único. Algumas observações sobre hash abaixo
- Qualquer mínima alteração nos dados fornecidos altera a senha gerada
- A senha hash não pode ser revertida
4. Como funcionam as funções hash para armazenar as senhas?
Vou explicar com um exemplo bem simples e cotidiano como funciona o hash para armazenar senhas.
Vamos supor que você está fazendo o cadastro em um novo sistema de streaming de filmes e séries. Ao fornecer suas credenciais, como nome de usuário, e-mail e senha, essas informações são salvas em um banco de dados. No entanto, seria extremamente inseguro se a sua senha fosse armazenada no banco exatamente como você a forneceu — tanto por risco de ataques de hackers quanto por funcionários mal-intencionados.Por isso, quando você fornece sua senha durante o cadastro, antes de ela ser salva, é aplicado um hash (ou seja, uma transformação dos dados da senha). Só então a senha transformada é salva no banco de dados.
Após isso, quando o usuário tenta fazer login, a senha informada é transformada novamente e comparada com o hash armazenado. Se estiver tudo correto, o login é realizado com sucesso.
5. O que é JWT
JWT é uma forma simples e segura de representar declarações que podem ser transmitidas entre duas partes, geralmente através de uma URL, de forma compacta e verificável. Essas declarações são codificadas como objetos JSON. Durante o login, o JWT gera um token de acesso que permite verificar se o usuário está autenticado e tem permissão para acessar determinado ambiente.
6. O que são tokens?
Um token é um código digital temporário que serve para identificar e autorizar um usuário após o login.
7. Criando servidor
Top comments (0)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.