ASP.NET SQL成员身份检查使用循环的登录尝试失败
本文关键字:循环 登录 失败 SQL NET 成员 身份 检查 ASP | 更新日期: 2023-09-27 18:20:42
我有一个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";
}
问题是,这段代码在控制台应用程序中有效,但当我尝试在按钮事件中编写它时,它失败了。
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";
}
这样尝试。。。。
protected ovoid Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Session["mloginAttempts"] = 0;
Session["maxLoginAttempt"] = 8;
}
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
int mLoginAttempt = Convert.ToInt32(Session["mloginAttempts"]);
int maxLoginAttempt = Convert.ToInt32(Session["maxLoginAttempt"]);
if(loginAttempts < maxLoginAttempt & txtPassword.Text != "Test")
{
if (loginAttempts == 3)
{
Session["mloginAttempts"] = Convert.ToInt32(Session["mloginAttempts"]) + 1;
ltrStatusMsg.Text = "Lock Warning";
}
Session["mloginAttempts"] = Convert.ToInt32(Session["mloginAttempts"]) + 1;
}
else
{
ltrStatusMsg.Text = "Account Locked";
}
}