Vous avez besoin de ce qu'on appelle une fenêtre de tentative de mot de passe.
Fondamentalement 2 champs dans la base de données, un LastPasswordAttempt (datetime) et PasswordAttemptCount (int)
Ensuite, à chaque connexion, vérifiez quand le dernier LastPasswordAttempt s'est produit et s'il a eu lieu dans les 10 dernières minutes - incrémentez le PasswordAttemptCount, sinon réinitialisez-le à 0 (ou 1 car ils viennent d'échouer).
Dans la même logique, vérifiez si PasswordAttemptCount est égal à 5 ou plus, si c'est le cas - refusez l'accès de l'utilisateur. Vous pourriez avoir un 3ème champ qui les verrouille pendant quelques heures ou une journée.
c'est-à-dire CanLoginAfter(datetime) que vous pouvez définir sur un jour à partir de la dernière tentative de mot de passe.
J'espère que cela vous aidera