Du behöver det som kallas ett lösenordsförsöksfönster.
I princip två fält i databasen, ett LastPasswordAttempt (datumtid) och PasswordAttemptCount (int)
Sedan vid varje inloggning, kontrollera när det senaste LastPasswordAttempt inträffade och om det har varit under de senaste säg 10 minuterna - öka PasswordAttemptCount, annars återställ det till 0 (eller 1 eftersom de precis har misslyckats).
I samma logik, kontrollera om PasswordAttemptCount är lika med säg 5 eller mer, om det är det - neka användaren åtkomst. Du kan ha ett tredje fält som låser dem ute i några timmar eller en dag.
d.v.s. CanLoginAfter(datetime) som du kan ställa in till en dag från det senaste lösenordsförsöket.
Hoppas detta hjälper