0

我想阻止输入密码超过 3 次的用户进入。我将他们的 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;
    }
4

2 回答 2

3

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

于 2012-08-31T08:09:11.080 回答
0

如果您使用会员服务提供商,您将免费获得此功能:

最大无效密码尝试次数

于 2012-08-31T08:12:48.597 回答