Menu
CoddyTech

Compter les tentatives échouées

Fait partie de la section Authentification et sécurité du Journey Node.js de Coddy. Leçon 21 sur 24.

Un limiteur de connexions doit mémoriser les tentatives échouées d’une requête à l’autre. Une Map stocke des valeurs associées à des clés. Utilise chaque nom d’utilisateur comme clé afin que les échecs d’un compte n’affectent pas les autres comptes.

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

counts.get(key) renvoie undefined si la clé est introuvable, le recours à la valeur de remplacement commence donc le décompte à zéro. Garde la Map en dehors de la fonction de requête pour la conserver pendant l’exécution de ce serveur. Dans cet exercice, chaque requête représente une tentative échouée. L’expiration sera traitée dans une étape distincte ; cette Map continue actuellement de compter jusqu’à ce que « Exécuter » redémarre le serveur.

challenge icon

Défi

Facile

Il s’agit d’un petit projet d’entraînement. Sa configuration est fournie ; modifie uniquement exercise.js.

Incrémente le nombre associé au nom d’utilisateur fourni et renvoie-le dans count. Envoie deux fois POST avec {"username":"ada"} à /result : les nombres obtenus sont 1 puis 2. Envoyer bo donne 1 ; envoyer ada de nouveau donne 3.

Crée toi-même la Map et place-la de sorte que la deuxième requête puisse accéder au premier nombre. Relancer le serveur efface ce stockage en mémoire.

Essayez vous-même

// Créez le stockage des compteurs à un emplacement où il persistera entre les requêtes.
export function exercise({ username }) {
    return { count: 0 };
}

Toutes les leçons de Authentification et sécurité

Entraînez-vous par vous-même : Playground Express