您的位置:首页 > 编程语言 > ASP

[asp.net]带错误登陆次数限制的C#代码

2012-08-26 20:49 876 查看
一旦登陆次数超过3次则账号被锁定,锁定后无论密码是否正确都不能登陆,

锁定后60分钟解除锁定,

采用强类型dataset,

数据库设计:

用户ID用户名用户密码用户等级错误次数错误时间
UIDUNamePWlevErrorTimesErrorDateTime
dataset新增方法:

  ResetErrorTimes()重置错误次数

  IncError() 增加错误次数,设置当前时间为错误时间

C#代码:

protected void Button1_Click(object sender, EventArgs e)
{
T_LoginTableAdapter adapter = new T_LoginTableAdapter();
var info = adapter.GetDataByUName(TextBox1.Text);
var row = info.Single();                 //等到数据是否唯一?,不唯一则出错

/////////////////////////////  上次错误时间 〉60?  //////////////////////////////////////////
if (!row.IsNull("ErrorDateTime"))
{
if ((new DateTime() - row.ErrorDateTime).TotalMinutes > 60)
{
adapter.ResetErrorTimes(TextBox1.Text);
}
}
////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////错误次数 > 3?/////////////////////////////////////////////
if (!row.IsNull("ErrorTimes"))
{
if (row.ErrorTimes >= 3)
{
Label4.Visible = true;
return;
}
}
/////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////密码是否正确?////////////////////////////////////////////////
if (row.PW!= TextBox2.Text)
{
adapter.IncError(TextBox1.Text);
return;
}
/////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////登陆成功 ////////////////////////////////////////////////
adapter.ResetErrorTimes(TextBox1.Text);
Session["level"] = row.Lev;
Session["Login"] = "true";
Session["ID"] = TextBox1.Text;
Response.Redirect("Download.htm");
//////////////////////////////////////////////////////////////////////////////////////////////
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: