Menu
CoddyTech

Contare i tentativi falliti

Fa parte della sezione Autenticazione e sicurezza del percorso Node.js di Coddy. Lezione 21 di 24.

Un limitatore di accessi deve ricordare i tentativi non riusciti tra una richiesta e l’altra. Una Map memorizza i valori associandoli a delle chiavi. Usa ogni nome utente come chiave, così i tentativi non riusciti di un account non influiranno sugli altri.

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

counts.get(key) restituisce undefined se la chiave non esiste, quindi il valore di ripiego inizializza il conteggio a zero. Mantieni la Map fuori dalla funzione di richiesta per conservarla mentre questo server è in esecuzione. In questo esercizio, ogni richiesta rappresenta un tentativo non riuscito. La scadenza verrà trattata in un passaggio separato; al momento, questa Map continua a contare finché non riavvii il server premendo «Esegui».

challenge icon

Sfida

Facile

Questo è un piccolo progetto di esercitazione. La configurazione è già predisposta; modifica solo exercise.js.

Incrementa il conteggio per lo username fornito e restituiscilo in count. Invia POST {"username":"ada"} due volte a /result: i conteggi saranno 1 e poi 2. Inviando bo si ottiene 1; inviando di nuovo ada si ottiene 3.

Crea tu la Map e posizionala in modo che la seconda richiesta possa vedere il primo conteggio. Premendo di nuovo Run, il server si riavvia e questo archivio in memoria viene svuotato.

Provalo tu

// Crea l'archivio dei conteggi in modo che persista tra le richieste.
export function exercise({ username }) {
    return { count: 0 };
}

Tutte le lezioni di Autenticazione e sicurezza

Esercitati da solo: Playground Express