Menu
CoddyTech

Un contador con expiración

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

Una ventana fija cuenta los intentos a partir de una hora de inicio. Guarda since junto al contador. Para una ventana de un minuto, vence cuando now - since alcanza los 60000 milisegundos.

// Una ventana de diez segundos en este ejemplo
if (now - since >= 10000) {
    count = 0;
    since = now;
}
count += 1;

Dentro de la ventana, conserva su hora de inicio original. Cambiarla después de cada intento prolongaría la espera continuamente. Esta práctica proporciona now para que puedas probar el límite sin esperar. Un servidor en ejecución obtiene la hora actual de Date.now(). El proyecto de inicio de sesión usa el mismo registro { count, since }.

challenge icon

Desafío

Fácil

Actualiza un registro de fallos de un minuto en exercise.js. Si now - since es al menos 60000, inicia una nueva ventana en now con un recuento de 1. De lo contrario, aumenta el recuento y conserva since. Devuelve ambos campos.

POST {"count":3,"since":0,"now":10000}: se espera {"count":4,"since":0}. En now:60000, se espera {"count":1,"since":60000}.

El GET /result inicial usa el ejemplo proporcionado {"count": 2, "since": 1000, "now": 61000}. Usa POST /result con un cuerpo JSON para probar otras entradas.

Pruébalo tú mismo

export function exercise({ count, since, now }) {
    return { count: count + 1, since };
}

Todas las lecciones de Autenticación y seguridad

Practica por tu cuenta: Playground de Express