ASP.NET Web アプリケーションがあり、Web.config
ファイルはロックを有効にするように設定されています: maxInvalidPasswordAttempts="8"
.
ただし、単純にユーザーをロックアウトするのではなく、4 回試行した後に、さらに X 回失敗するとアカウントがロックされるというメッセージを表示したいと考えています。
例: ユーザーが 4 回失敗したとします。アカウントがロックされることを警告するメッセージが表示されます (合計試行回数は指定しません)。失敗が多すぎるとアカウントがロックされるという警告が表示されます。
試行に 8 回失敗すると、ユーザーはアカウントがロックされているというメッセージを受け取ります。
これを行うために、 を使用することにしたWhile Loop
ので、次のようなループを作成しました。通常、ラフ ドラフトを作成し、コードが機能する場合は、それをプロジェクトに追加します。
私はすでにログインしており、他のすべてが機能しています。このループだけです。ループのどこが間違っているかを見つけることができれば、すべての DB チェックとアカウントのロックを行うことができます。
if (Membership.ValidateUser(txtUserName.Text, txtPassword.Text))
{
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, chkMemory.Checked);
}
else
{
ltrStatusMsg.Text = "* InValid Login";
}
問題は、このコードがコンソール APP で機能することですが、ボタン イベントに書き込もうとすると失敗します。
static void Main(string[] args)
{
int loginAttempts = 0;
int maxLoginAttempt = 8;
while (loginAttempts < maxLoginAttempt)
{
Console.Write("Enter a number: ");
Console.ReadLine();
if (loginAttempts == 3)
{
loginAttempts++;
Console.Write("Lock Warning :");
}
loginAttempts++;
}
Console.Write("Account Locked: ");
Console.ReadKey();
}
例: In Button Event: *注: 問題を見つけるために、このコードを何度も変更しました。
protected void btnSubmit_Click(object sender, EventArgs e)
{
int loginAttempts = 0;
int maxLoginAttempt = 8;
while (loginAttempts < maxLoginAttempt & txtPassword.Text != "Test")
{
if (loginAttempts == 3)
{
loginAttempts++;
ltrStatusMsg.Text = "Lock Warning";
}
loginAttempts++;
}
ltrStatusMsg.Text = "Account Locked";
}