私は初心者です。私は、誰かが最大3回のログイン試行だけにユーザーを制限することに慣れているかどうかを知りたいですが、失敗します。ログオンは正常に機能していますが、間違ったパスワードでウェブにアクセスしようとすると、カウンタが機能しませんでした。誰かが私を助けることができる?ここに私のコードです:ASP.NET制限ログインの再試行
protected void btnSubmit_Click(object sender, EventArgs e)
{
try
{
SqlConnection con = new SqlConnection(GetConnectionString());
con.Open();
SqlCommand cmd = new SqlCommand("CheckMember",con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter p1 = new SqlParameter("@userName",txtUsername.Text.ToString());
SqlParameter p2 = new SqlParameter("@password",txtPassword.Text.ToString());
SqlParameter p3 = new SqlParameter("@accountNo",txtAcctNo.Text.ToString());
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
cmd.Parameters.Add(p3);
SqlDataReader lmsreader = cmd.ExecuteReader();
if (lmsreader.HasRows)
{
lmsreader.Read();
FormsAuthentication.RedirectFromLoginPage(txtUsername.Text.ToString(), false);
// FormsAuthentication.RedirectFromLoginPage(txtUsername.Text.ToString(), chkboxCookie.Checked);
lblError.Text = "You got it!";
Response.Redirect("MyAccount.aspx");
con.Close();
}
else
{
this.lblError.Text = "Invalid username, password or account number.<br> Please try again.";
this.lblError.ForeColor = System.Drawing.Color.Red;
object FailedLoginCounter = this.Page.Cache["UserKey_" + this.txtUsername.Text];
if (FailedLoginCounter == null)
{
FailedLoginCounter = 0;
}
this.Page.Cache["UserKey_" + this.txtUsername.Text] = (int)FailedLoginCounter + 1;
if (((int)this.Page.Cache["UserKey_" + this.txtUsername.Text]) == 3)
{
SqlConnection conect = new SqlConnection(GetConnectionString());
SqlCommand commander = new SqlCommand("MemberIsBlocked", con);
commander.CommandType = CommandType.StoredProcedure;
conect.Open();
SqlParameter puser = new SqlParameter("@username", txtUsername.Text.ToString());
cmd.ExecuteNonQuery();
conect.Close();
lblError.Text = "You are Temporarily Blocked for <br> Exceeding Max Number of Login Attempts.";
}
}
}
catch
{
}
finally
{
}
}
public string GetConnectionString()
{
return ConfigurationManager.ConnectionStrings["ConnectionServices"].ConnectionString;
}
あなたの助けに感謝します!ありがとう!
'this.Page.Cache [" User_Key "+ ...]'の代わりに 'Session [" User_Key "+ ...]'を使ってみてください。 –
「カウンターは機能しませんでした」と言ったら、どういう意味ですか?デバッガでこのコードを実行して、何が起こっているのか正確に確認しましたか? – patmortech
@UweKeim私は数秒前にやったが、まだ動作していない。 – Dhenn