私はこのビジネス上の問題を解決しようとしています:
- ユーザーは 5 分ごとに 10 回のログイン試行を取得します
- ユーザーの試行回数が 10 回を超えると、「ログインを待つ必要があります」というメッセージが表示されます
- 5 分経過したら、試行回数をリセットして、ユーザーにあと 10 回試行させる必要があります。
を使用せずにこれを行いたいのTimer
ですが、この情報のほとんどをSession
public class LoginExp
{
public DateTime FirstAttempt;
public int NumOfAttempts;
}
FirstAttempt
ページの読み込み時に DateTimeを保存します。
[ログイン] ボタンをクリックします。
- 私はインクリメントします
NumOfAttempts
- 同じ 5 分間のタイム スロット内でNumOfAttempts < 10 かどうかを確認する必要があります。
FirstAttempt
と の間で経過した分数を取得DateTime.Now
して mod 5 を実行できますが、これがどのタイムスロットにあるかはわかりません (つまり、ユーザーは 2 分の時点で 3 回試行してから戻ってくる可能性があります)。再試行を行うために 7 分で.mod
は私に同じ値を与えるでしょう.
どうすればこれを行うことができるかについて何か考えはありますか?