我有一個ASP.NET Web應用程序,Web.config
文件設置爲啓用鎖定:maxInvalidPasswordAttempts="8"
。ASP.NET SQL成員資格檢查使用循環失敗登錄嘗試
但是,我不想簡單地鎖定用戶,我想在嘗試4次後顯示一條消息,表明帳戶在X次額外失敗嘗試後將被鎖定。
示例:假設用戶有4次失敗嘗試;他們會看到一條消息,警告該帳戶將被鎖定(我不想指定總嘗試次數),只會導致帳戶鎖定過多失敗。
8次失敗嘗試後,用戶會收到一條消息,指出該帳戶已被鎖定。
要做到這一點,我決定使用While Loop
,所以我創建了這樣的循環: 我通常創建一個草稿,如果代碼工作,然後將其添加到我的項目。
我已經有登錄和其他一切工作,只是這個循環。如果我能找到循環出錯的地方,那麼我可以執行所有數據庫檢查並鎖定帳戶。
if (Membership.ValidateUser(txtUserName.Text, txtPassword.Text))
{
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, chkMemory.Checked);
}
else
{
ltrStatusMsg.Text = "* InValid Login";
}
問題是此代碼在控制檯應用程序中工作,但是當我嘗試將它寫入按鈕事件時失敗。
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();
}
例:按鈕事件: *注:我已經多次改變了這種代碼,找出我的問題*
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";
}
我認爲在回發的變量值是intilized回零。使用斷點來檢查 – Karthik
我們可以通過指定當前登錄在誘惑會話的價值,並通過條件。循環不是必需的... –
我不得不從數據庫中檢索?這聽起來像個好主意,因爲無論如何我已經在檢查數據庫以驗證用戶登錄。 – Asynchronous