我想阻止输入密码超过三次的用户。我将他们的IP保存在会话中,并将超时设置为一分钟。我不知道这个解决方案是好是坏,但是当输入错误的密码三次时就会出现问题。代码可以正常工作,但是当会话超时时,如果我不刷新页面,它就不能工作。用户应该能够重试,但如果我刷新它,用户可以重试。有什么问题吗?
这是我的代码。
if (olduser.Trim() == username.Trim() && password.Trim()==oldpass.Trim())
{ retval =olduser;
HttpContext context = HttpContext.Current;
context.Session[retval.ToString()] = retval.ToString();
}
else
{
string ip = HttpContext.Current.Request.UserHostAddress;
HttpContext failuser = HttpContext.Current;
failuser.Session.Timeout =1;
if (failuser.Session[ip] != null)
failuser.Session[ip] = (int)failuser.Session[ip] + 1;
else
failuser.Session[ip] = 1;
retval = failuser.Session[ip].ToString();
if((int)failuser.Session[ip]>2)
retval = "!";
}
return retval;
}发布于 2012-08-31 16:09:11
您可能正在尝试重新发明轮子。考虑使用内置的ASP.NET Membership Provider。
发布于 2012-08-31 16:12:49
如果您使用成员资格提供程序,则可以免费获得以下功能:
Max Invalid Password Attempts
https://stackoverflow.com/questions/12211249
复制相似问题