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.
Défi
FacileIl 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é
1Mots de passe
Octets et texte hexadécimalDériver une clé de mot de passeUn nouveau selNe stockez jamais les mots de passeComparer les octets de cléVérifier un mot de passeRègles d’inscription4Propriétaires et sécurité
Vos notes uniquementRôles d’administrationEntraînez-vous par vous-même : Playground Express