Menu
CoddyTech

Contando tentativas malsucedidas

Parte da seção Autenticação e segurança do Journey de Node.js da Coddy. Lição 21 de 24.

Um limitador de tentativas de login precisa se lembrar das tentativas malsucedidas entre as requisições. Um Map armazena valores associados a chaves. Use cada nome de usuário como chave para que as falhas de uma conta não afetem outra conta.

const counts = new Map();
const old = counts.get('bo') ?? 0;
counts.set('bo', old + 1);

counts.get(key) retorna undefined quando a chave não existe, então o valor alternativo inicia a contagem em zero. Mantenha o Map fora da função de requisição para preservá-lo enquanto este servidor estiver em execução. Cada requisição neste exercício representa uma tentativa malsucedida. A expiração será uma etapa separada; atualmente, este Map continua contando até que “Executar” reinicie o servidor.

challenge icon

Desafio

Fácil

Este é um pequeno projeto de prática. A configuração já foi fornecida; edite apenas exercise.js.

Incremente a contagem para o nome de usuário fornecido e retorne-a em count. Envie POST {"username":"ada"} duas vezes para /result: as contagens serão 1 e depois 2. Enviar bo resulta em 1; enviar ada novamente resulta em 3.

Crie o Map você mesmo, colocando-o de modo que a segunda solicitação possa acessar a primeira contagem. Pressionar “Jogar” novamente reinicia o servidor e limpa esse armazenamento em memória.

Experimente você mesmo

// Crie o armazenamento das contagens em um local onde ele persista entre as requisições.
export function exercise({ username }) {
    return { count: 0 };
}

Todas as lições de Autenticação e segurança

Pratique por conta própria: Playground de Express