Autenticação no Backend
Introdução à Autenticação
A autenticação é um componente crucial em qualquer aplicação backend, garantindo que apenas usuários autorizados possam acessar determinadas funcionalidades e recursos. Sem uma autenticação adequada, a segurança da aplicação fica comprometida, expondo dados sensíveis e funcionalidades críticas a acessos indevidos.
Neste módulo, vamos entender como implementar a autenticação no nosso sistema de loja simples, utilizando ferramentas modernas como bcrypt para criptografar senhas e JWT (JSON Web Token) para gerenciamento de tokens de autenticação.
Organização Básica do Código para Autenticação
Para manter o código organizado e de fácil manutenção, é importante seguir uma estrutura clara. A seguir, apresentamos uma organização básica das pastas e responsabilidades de cada camada no processo de autenticação:
Estrutura de Pastas Recomendada:
project-root/
│
├── controllers/
│ └── authController.js
├── services/
│ └── authService.js
├── repositories/
│ └── userRepository.js
├── utils/
│ └── hash.js
├── config/
│ └── jwtConfig.js
├── routes/
│ └── authRoutes.js
└── index.jsDescrição das Camadas:
Controller: Define as rotas e lida com as requisições relacionadas à autenticação.
Service: Contém a lógica de negócio para autenticação, como verificação de credenciais.
Repository: Acessa diretamente o banco de dados para buscar ou armazenar informações de usuários.
Utils: Funções utilitárias, como criptografia de senhas.
Config: Configurações gerais, como chaves secretas para tokens.
Passos para Implementar a Autenticação
Vamos seguir um passo a passo para implementar a autenticação no nosso projeto:
1. Preparar as Rotas de Usuário
Primeiro, precisamos configurar os endpoints para cadastro e login dos usuários.
2. Criptografar Senhas com bcrypt
Para garantir a segurança das senhas dos usuários, utilizaremos a biblioteca bcrypt para criptografá-las antes de armazená-las no banco de dados.
Instalação do bcrypt:
Implementação das Funções de Criptografia:
3. Implementação do Controller de Autenticação
O controller lida com as requisições de cadastro e login, utilizando os serviços apropriados.
4. Implementação do Service de Autenticação
O service contém a lógica de negócio para cadastro e login dos usuários.
5. Implementação do Repository de Usuários
O repository acessa diretamente o banco de dados para buscar ou armazenar informações de usuários.
6. Atualização das Rotas no Servidor
Integrar as rotas de autenticação no servidor principal.
Fluxo de Autenticação
Cadastro de Usuário:
O usuário envia seus dados para o endpoint
/auth/cadastro.A senha é criptografada utilizando bcrypt.
Os dados do usuário são armazenados no banco de dados sem gerar um token.
Login:
O usuário envia suas credenciais para o endpoint
/auth/login.As credenciais são verificadas e, se válidas, um token JWT é gerado e retornado (a implementação completa do token será detalhada na página "Tokens e Segurança").
Last updated
Was this helpful?