防止输入错误密码的用户超过3次

时间:2012-08-31 08:06:39

标签: c# asp.net

我想阻止输入密码超过三次的用户。我在会话中保存他们的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;
    }

2 个答案:

答案 0 :(得分:3)

你可能正在尝试重新发明轮子。考虑使用内置的ASP.NET Membership Provider

答案 1 :(得分:0)

如果您使用会员提供商,则可以免费获得此功能:

Max Invalid Password Attempts