Menu
CoddyTech

Contar intentos fallidos

Parte de la sección Autenticación y seguridad del Journey de Node.js de Coddy. Lección 21 de 24.

Un limitador de inicios de sesión debe recordar los intentos fallidos entre solicitudes. Un Map almacena valores bajo claves. Usa cada nombre de usuario como clave para que los fallos de una cuenta no afecten a otra.

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

counts.get(key) devuelve undefined si la clave no existe, por lo que el valor alternativo inicia el contador en cero. Mantén el Map fuera de la función de solicitud para conservarlo mientras se ejecuta este servidor. En esta práctica, cada solicitud representa un intento fallido. La caducidad será un paso aparte; este Map sigue contando hasta que Run reinicia el servidor.

challenge icon

Desafío

Fácil

Este es un pequeño proyecto de práctica. La configuración ya está preparada; edita solo exercise.js.

Incrementa el contador para el nombre de usuario proporcionado y devuélvelo en count. Envía POST con {"username":"ada"} dos veces a /result: los contadores serán 1 y después 2. Enviar bo da 1; enviar ada de nuevo da 3.

Crea el Map tú mismo y colócalo de modo que la segunda solicitud pueda ver el primer contador. Al pulsar «Ejecutar» de nuevo, se reinicia el servidor y se borra este almacén en memoria.

Pruébalo tú mismo

// Crea el almacén de recuentos en un lugar donde persista entre solicitudes.
export function exercise({ username }) {
    return { count: 0 };
}

Todas las lecciones de Autenticación y seguridad

Practica por tu cuenta: Playground de Express