Recuperar Senha
Endpoint para iniciar o processo de recuperação de senha, enviando email com token de reset para o usuário.
Parâmetros
Path Parameters
Email do usuário que deseja recuperar a senha
Responses
{
"message": "Email de recuperação enviado com sucesso"
}
Exemplo de Requisição
curl --location --request PATCH 'http://localhost:3333/auth/send-recover-email/[email protected]'
Processo de Recuperação
Fluxo Completo
Solicitação
Usuário informa email no formulário de recuperação
Validação
Sistema verifica se email existe na base de dados
Geração de Token
Sistema gera token único com validade limitada (30 minutos)
Envio de Email
Email com link de reset é enviado para o usuário
Reset
Usuário clica no link e define nova senha
Implementação Frontend
<form id="forgot-password-form" class="recovery-form">
<h2>Recuperar Senha</h2>
<div class="form-group">
<label for="email">Email:</label>
<input
type="email"
id="email"
name="email"
required
placeholder="Digite seu email"
>
</div>
<button type="submit" id="submit-btn">
<span id="btn-text">Enviar Email de Recuperação</span>
<span id="loading" style="display: none;">Enviando...</span>
</button>
<div id="message-container"></div>
<a href="/login">Voltar ao Login</a>
</form>
Segurança
Token de Reset
- Validade: 30 minutos
- Uso único: Token é invalidado após uso
- Criptografia: Token é hash único e não previsível
Validações
const securityChecks = {
// Verificar se email existe (sem vazar informação)
emailExists: async (email) => {
// Retorna sempre sucesso para não vazar dados
return true;
},
// Rate limiting por IP
checkIPLimit: (ip) => {
const attempts = getAttempts(ip);
return attempts < 5;
},
// Rate limiting por email
checkEmailLimit: (email) => {
const attempts = getEmailAttempts(email);
return attempts < 3;
}
};
Métricas Importantes
- Taxa de conversão (email enviado → senha alterada)
- Tentativas por hora/dia
- Emails mais frequentes (possível abuse)
- Tokens expirados não utilizados
Troubleshooting
Problemas Comuns
| Problema | Causa Provável | Solução |
|---|
| Email não chega | Spam/bloqueio SMTP | Verificar configuração de email |
| Token expirado | Usuário demorou para usar | Solicitar novo token |
| Link quebrado | Template mal formatado | Verificar template de email |
Por segurança, o endpoint sempre retorna sucesso, mesmo para emails inexistentes, evitando enumeração de usuários.
Implemente logs detalhados para monitorar tentativas de abuse e tokens não utilizados.
Próximos Passos
- Configure template de email personalizado
- Implemente rate limiting robusto
- Configure monitoramento de deliverabilidade
- Teste diferentes provedores de email
O token de reset é válido por apenas 30 minutos e pode ser usado uma única vez para máxima segurança.