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.js

Descriçã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

  1. 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.

  2. 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?