Este projeto foi desenvolvido como parte de meus estudos sobre autenticação e segurança em aplicações .NET. O foco principal foi implementar autenticação baseada em JWT (JSON Web Token) e garantir boas práticas de segurança, como o uso de hashing para senhas de usuários. O projeto também aborda padrões de desenvolvimento, arquitetura limpa e melhores práticas para um código escalável e manutençível.
- Identity Core: Utilizado para hashing seguro de senhas.
- .NET 8: Plataforma principal para desenvolvimento da aplicação.
- JWT (JSON Web Token): Implementado para autenticação e autorização segura.
- Swagger: Utilizado para documentar e testar os endpoints da API diretamente no navegador.
- Entity Framework: Utilizado para mapeamento objeto-relacional (ORM) e acesso ao banco de dados.
- SQLite: Banco de dados leve e de fácil configuração para estudos e aplicações pequenas.
- Padrão Repository: Abstração para acesso e manipulação de dados.
- Arquitetura Limpa: Estrutura do projeto organizada em camadas, garantindo separação de responsabilidades.
- Service Pattern: Lógica de negócio encapsulada em serviços para melhor organização e reuso.
- Fluent Validation: Validação de dados de entrada de forma fluente e reutilizável.
- Injeção de Dependência: Gerenciamento centralizado de dependências para promover o desacoplamento.
- Padronização de Mensagens de Retorno: Uso de códigos específicos para categorizar mensagens de resposta.
- Padronização de Respostas da API: Estrutura uniforme para respostas, facilitando a integração com clientes.
- Service Extensions: Métodos de extensão para centralizar a configuração de serviços.
- DTOs (Data Transfer Objects): Uso de objetos de transferência de dados para controlar entradas e saídas da API.
- Melhores Práticas e Clean Code: Enfase em código limpo, legível e fácil de manter.
- API: Responsável por expor os endpoints e configurar a injeção de dependências.
- Application: Contém as regras de negócio, validações e padrões como DTOs.
- Domain: Define as entidades principais do sistema.
- Infrastructure: Implementação do acesso a dados usando Entity Framework e integrações externas.
- Cadastro de Usuários: Com hashing seguro de senhas.
- Autenticação JWT: Geração de tokens para autenticação e controle de sessão.
- Validação de Dados: Regras de validação aplicadas a todas as entradas.
- Endpoints Seguros: Proteção de endpoints sensíveis com autorização JWT.
- Visual Studio 2022
- .NET 8 SDK
- SQLite
- Ferramenta para testar APIs (Postman, Insomnia, ou similar)
- Clone o repositório do projeto.
- Configure o banco de dados SQLite no arquivo
appsettings.json. - Abra o projeto no Visual Studio 2022.
- Execute o comando
dotnet ef database updatepara criar o banco de dados. - Inicie o projeto pressionando F5.
- Utilize uma ferramenta de teste de APIs para consumir os endpoints expostos.
As respostas da API seguem o seguinte formato:
{
"statusCode": 200,
"success": true,
"message": "Operation completed successfully.",
"data": {}
}- statusCode: Representa o código HTTP da operação (ex.: 200, 400, 500).
- success: Indica se a operação foi bem-sucedida.
- message: Mensagem descritiva sobre o resultado da operação.
- data: Contém os dados retornados (se aplicável).
Este projeto proporcionou experiências valiosas, incluindo:
- Implementação segura de autenticação com hashing e JWT.
- Melhoria na organização do código com padrões de arquitetura e design.
- Validação de dados robusta com Fluent Validation.
- Implementar testes automatizados para garantir a qualidade do código.
Este projeto foi desenvolvido com o objetivo de aprendizado e melhoria de habilidades em .NET. Sugestões e melhorias são sempre bem-vindas!