Uma API REST simples de login desenvolvida com Node.js e Express, implementando todas as funcionalidades solicitadas.
✅ Login com sucesso: Autenticação com username e password
✅ Login inválido: Retorna erro 401 para credenciais incorretas
✅ Bloqueio após 3 tentativas: Bloqueia usuário por 15 minutos após 3 tentativas consecutivas falhas
✅ Lembrar senha: Rota POST /remember para simular recuperação de senha
- Clone o repositório
- Instale as dependências:
npm installnpm run devnpm startA API estará disponível em http://localhost:3000
POST /login
Body:
{
"username": "admin",
"password": "admin123"
}Resposta de sucesso (200):
{
"success": true,
"message": "Login realizado com sucesso!",
"user": {
"username": "admin"
}
}Resposta de erro (401):
{
"success": false,
"message": "Credenciais inválidas. Tentativas restantes: 2"
}POST /remember
Body:
{
"username": "admin"
}Resposta (200):
{
"success": true,
"message": "E-mail de recuperação enviado para o usuário admin. Verifique sua caixa de entrada."
}GET /status/:username
Resposta:
{
"username": "admin",
"isBlocked": false,
"consecutiveFailures": 0,
"blockedUntil": null
}GET /users
Resposta:
{
"success": true,
"users": [
{
"username": "admin",
"password": "***"
}
]
}| Username | Password |
|---|---|
| admin | admin123 |
| user1 | password123 |
| teste | 123456 |
- Após 3 tentativas consecutivas de login falhas, o usuário é bloqueado por 15 minutos
- Durante o bloqueio, todas as tentativas de login retornam erro 401
- O bloqueio é automático e baseado em tempo
- O sistema mantém registro de tentativas consecutivas falhas
- Tentativas bem-sucedidas resetam o contador de falhas
- Informações sobre tentativas restantes são fornecidas nas respostas de erro
├── server.js # Servidor principal da API
├── package.json # Dependências e scripts
└── README.md # Documentação
- Node.js: Runtime JavaScript
- Express: Framework web
- CORS: Middleware para Cross-Origin Resource Sharing
Login bem-sucedido:
curl -X POST http://localhost:3000/login \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "admin123"}'Login com credenciais inválidas:
curl -X POST http://localhost:3000/login \
-H "Content-Type: application/json" \
-d '{"username": "admin", "password": "senhaerrada"}'Solicitar recuperação de senha:
curl -X POST http://localhost:3000/remember \
-H "Content-Type: application/json" \
-d '{"username": "admin"}'Todos os dados são mantidos em memória durante a execução da aplicação:
- Lista de usuários válidos
- Registro de tentativas de login
- Usuários bloqueados com timestamps
Nota: Os dados são perdidos quando o servidor é reiniciado.