Uma API de registro e autenticação de usuários para jogos, construída com .NET 8, ASP.NET Core Identity e JWT.
Este projeto foi desenvolvido como parte da minha jornada em backend com .NET, focando em arquitetura limpa, boas práticas de API REST e segurança de autenticação moderna. A API permite que um cliente (como um game client) registre usuários, faça login e obtenha tokens JWT para acessar recursos protegidos.
- Registro de usuários com validação de dados
- Login com geração de JWT (JSON Web Token)
- Armazenamento seguro de senhas com ASP.NET Identity
- Validação de entrada com FluentValidation
- Tratamento centralizado de exceções
- Arquitetura desacoplada com casos de uso (UseCases)
Este projeto incorpora:
| Recurso | Tecnologias |
|---|---|
| API REST | ASP.NET Core Web API |
| ORM | Entity Framework Core (EF Core) |
| Banco de Dados | SQLite |
| Validação de dados | FluentValidation |
| Autenticação | ASP.NET Core Identity |
| Autorização | JWT (JSON Web Tokens) |
| Tratamento de Erros | Exception Filters personalizados |
| Boas práticas | Arquitetura em camadas, DI, Clean Code |
Antes de rodar o projeto, você precisa ter instalado:
- .NET 8 SDK
- Um editor de código, como Visual Studio ou VS Code
GameUsersAPI
├── GameUsers.API ← Projeto principal da API
│ ├── Controllers ← Endpoints da API
│ ├── Filters ← Filtros de exceção
│ ├── UseCase ← Casos de uso por funcionalidade
│ ├── Infraestructure ← EF DbContext e configuração
│ ├── Models ← Entidades de domínio
│ └── Program.cs ← Configuração de serviços e pipeline
├── GameUsers.Communication ← DTOs de request/response
├── GameUsers.Exceptions ← Exceções personalizadas
├── README.md ← Documentação
├── appsettings.json ← Configurações (JWT, DB, etc.)
└── ...
- Clone o repositório:
git clone https://github.com/Iclasth/GameUsersAPI.git- Entre na pasta do projeto:
cd GameUsersAPI/GameUsers.API- Instale as dependências e restaure pacotes:
dotnet restore- Crie as migrations e atualize o banco:
dotnet ef migrations add InitialIdentity
dotnet ef database update- Rode a API:
dotnet run- Acesse o Swagger para testar os endpoints:
https://localhost:5001/swagger
| Método | Endpoint | Descrição |
|---|---|---|
| POST | /api/auth/register |
Registra um novo usuário |
| POST | /api/auth/login |
Faz login e retorna um token JWT |
| GET | /api/users |
Exemplo de rota protegida (requer JWT) |
A API possui autenticação JWT, portanto rotas protegidas exigem o cabeçalho:
Authorization: Bearer <seu_token_aqui>
A API utiliza:
- Gerencia usuários
- Armazena senhas de forma segura
- Integra com EF Core
- Tokens assinado com chave secreta
- Permite rotas protegidas
- Stateless — o servidor não guarda sessão
💡 O token contém claims que representam o usuário logado.
- FluentValidation: valida os dados de entrada (DTOs)
- ExceptionFilter: converte exceções em respostas HTTP padronizadas
- Erros de validação retornam status
400 Bad Request - Regras de negócio retornam mensagens consistentes
Embora esse projeto não inclua testes automatizados ainda, você pode:
- Adicionar testes de unidade para UseCases
- Escrever testes de integração para rotas protegidas
- Configurar pipelines de CI/CD
Aqui vão ideias para evoluir o projeto:
- Adicionar Refresh Tokens
- Controlar Roles e Policies
- Implementar paginação e filtros avançados
- Subir em ambiente real (Azure / AWS / Railway / Render)
- 🔗 Repositório: https://github.com/Iclasth/GameUsersAPI
- 📍 Swagger (depois de rodar):
/swagger
Contribuições são bem-vindas! Se você encontrou um bug ou tem uma sugestão, fique à vontade para abrir uma issue ou enviar um pull request 👍
Esse projeto foi um marco no meu aprendizado em APIs profissionais. Agradeço a todos que acompanharam e colaboraram com feedbacks!