Potřebujete to, čemu se říká okno pokusu o heslo.
V podstatě 2 pole v databázi, jedno LastPasswordAttempt (datetime) a PasswordAttemptCount (int)
Poté při každém přihlášení zkontrolujte, kdy došlo k poslednímu pokusu o LastPasswordAttempt a zda to bylo za posledních řekněme 10 minut – zvyšte počet PasswordAttemptCount, jinak jej resetujte na 0 (nebo 1, protože právě selhaly).
Ve stejné logice zkontrolujte, zda je PasswordAttemptCount roven řekněme 5 nebo více, pokud ano - odepřete přístup uživateli. Můžete mít 3. pole, které je na několik hodin nebo den uzamkne.
tj. CanLoginAfter(datetime), které můžete nastavit na den od posledního pokusu o heslo.
Doufám, že to pomůže