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 }.
Desafío
FácilActualiza 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
1Contraseñas
Bytes y texto hexadecimalDerivar una clave de contraseñaUna sal nuevaNunca almacenes contraseñasComparar bytes de claveVerificar una contraseñaReglas de registro4Propietarios y seguridad
Solo tus notasRoles de administraciónPractica por tu cuenta: Playground de Express