|M| 我的登录想做成5次密码不正确的话这个用户停止登录10分钟 在没有这个功能下要怎么来加最快速 如题用户表id name pass 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 添加到Application里面就可以了 给你例子:private void Button1_Click(object sender, System.EventArgs e) { // Check IP if (!new DenyIP().DetectIP((DataTable)Application["IPList"],PublicConst.RemoteUserIp,10)) { //DataMethod.RunPro_Logs("None","IP被拒绝10分钟"+PublicConst.RemoteUserIp,"0","Lock"); Message.Alert("多次登录失败,IP被拒绝",Page); return; } if (Text_user.Text.Trim()=="" || Text_pswd.Text.Trim()=="") { Message.Alert("用户名和密码不能为空",Page); } else { string Str_user=CheckData.CheckString(Text_user.Text.ToString()); string Str_pass=Text_pswd.Text.Replace("=",""); try { //this.DeletePrivateFile(); if(Role.DataMethod.CheckLogin(Str_user,Str_pass)) { // FormsAuthentication.SetAuthCookie(Str_user,true); // FormsAuthentication.RedirectFromLoginPage(Str_user,true); // Response.Write ("dd"+Context.User.Identity.Name); Response.Redirect("default.aspx",false); // Response.Redirect(PrivateConst.HistoryUrl,false); // PrivateConst.HistoryUrl = null; } else { new DenyIP().Add((DataTable)Application["IPList"],PublicConst.RemoteUserIp); Message.Alert("登入失败!可能原因\\n用户名或密码不正确\\n太多的错误次数,ID被拒绝",Page); } } catch(Exception exp) { SendMail.SendMailToManager(exp.ToString()); Message.Alert("登入失败\\n服务器数据错误,请联系管理员",Page); } } } public static bool CheckLogin(string userName,string passWord) { bool loginok=false; string sql=" select * from userm where login_id='"+ userName +"' and nvl(stop_mk,'0') <>'1' " ; IDataReader r= OracleHelper.GetDataReader(sql); if (r.Read()) { // Lock UserId 3 minutes if (PrivateConst.ErrorTimes >3) { //LockUser(userName,3); //RunPro_Logs(userName,"多次登录失败,封ID3分钟","0","Lock"); r.Close(); return false; } passWord = Encrypt.Encode(passWord,PrivateConst.EncryptKey); //string DepassWord =Encrypt.PBDecode(r["usr_pwd"].ToString()); //SendMail.SendMailToManager(passWord +"-"+DepassWord); if (passWord == r["usr_pwd"].ToString()) { if(r["PWD_UPD_DATE"].ToString().CompareTo(PublicConst.DateNowToday8) <0 ) { loginok = false; } else { Users myuser = new Users(); //myuser.CORP_NO = r["CORP_NO"].ToString(); myuser.CORP_NO =""; myuser.USR_ID = r["USR_ID"].ToString(); myuser.USR_CNAME = r["USR_CNAME"].ToString(); myuser.LOGIN_ID = r["LOGIN_ID"].ToString(); //登录用ID,原Usr_id 作为内部标识符使用 myuser.USR_ENAME = PublicConst.RandomByNumber(4); //记录在线用户用,作为同一ID多次登录的识别符 //myuser.USR_PWD = r["USR_PWD"].ToString(); //myuser.USR_KIND = r["USR_KIND"].ToString(); //myuser.DEPT_NO = r["DEPT_NO"].ToString(); //myuser.BRANCH_NO = r["BRANCH_NO"].ToString(); myuser.LOGIN_TIME = PublicConst.RandomByTime14; myuser.LOGIN_TIMES = CheckData.ToInt(r["LOGIN_TIMES"]); myuser.LAST_IP = PublicConst.RemoteUserIp; myuser.STOP_MK = r["STOP_MK"].ToString(); PrivateConst.User = myuser; //SendMail.SendMailToManager(myuser.corp_no+myuser.UserZone); if (CheckData.ToString(r["logout_time"]).CompareTo(PublicConst.RandomByTime14) <0) { // 记录登录情况 UserLogs(myuser.USR_ID); loginok = true; } else { loginok =false; } } } else { loginok =false; } } else { loginok = false; } r.Close(); if (loginok) { // Set Init Corp // add 2006-11-15 //PrivateConst.User.CORP_NO = DataCommon.GetInitCorpNo(userName); PrivateConst.User.CORP_NO = ""; PrivateConst.ErrorTimes =0; return true; } else { PrivateConst.ErrorTimes +=1; return false; } } 加个字段识别就好了:id name pass time errcount当用户登入1次错误就把errcount+1,但errcount=5的时候就不给用户登入,并把time设置为当前系统时间,用户再次登入的时候就比较该时间是不是过去了10分钟,如果是就把errcount改为0,让用户登入 急急 asp.net 伪静态怎么实现? NHibernate怎么用?对于以数据为主的企业平台适合吗 asp.net 正则 取值 字符串拆分问题 求助:COOKIE 问题,谢谢了 在线等,奇怪啦,关于url地址栏的编码解码 如何在webform里播放声音文件? 请问哪里有支持asp.net的域名空间 请各位高手帮忙:代码有点问题; ajax.actionlink出现的问题,求大神 灵异事件:不到20条记录的视图,select竟然超时.... 单点登录,各B/S系统都在同一个浏览器跳转,SESSION变量会冲突吗???
private void Button1_Click(object sender, System.EventArgs e)
{
// Check IP
if (!new DenyIP().DetectIP((DataTable)Application["IPList"],PublicConst.RemoteUserIp,10))
{
//DataMethod.RunPro_Logs("None","IP被拒绝10分钟"+PublicConst.RemoteUserIp,"0","Lock");
Message.Alert("多次登录失败,IP被拒绝",Page);
return;
}
if (Text_user.Text.Trim()=="" || Text_pswd.Text.Trim()=="")
{
Message.Alert("用户名和密码不能为空",Page);
}
else
{
string Str_user=CheckData.CheckString(Text_user.Text.ToString());
string Str_pass=Text_pswd.Text.Replace("=","");
try
{
//this.DeletePrivateFile();
if(Role.DataMethod.CheckLogin(Str_user,Str_pass))
{
// FormsAuthentication.SetAuthCookie(Str_user,true);
// FormsAuthentication.RedirectFromLoginPage(Str_user,true);
// Response.Write ("dd"+Context.User.Identity.Name);
Response.Redirect("default.aspx",false);
// Response.Redirect(PrivateConst.HistoryUrl,false);
// PrivateConst.HistoryUrl = null;
}
else
{
new DenyIP().Add((DataTable)Application["IPList"],PublicConst.RemoteUserIp);
Message.Alert("登入失败!可能原因\\n用户名或密码不正确\\n太多的错误次数,ID被拒绝",Page);
}
}
catch(Exception exp)
{
SendMail.SendMailToManager(exp.ToString());
Message.Alert("登入失败\\n服务器数据错误,请联系管理员",Page);
}
}
}
{
bool loginok=false;
string sql=" select * from userm where login_id='"+ userName +"' and nvl(stop_mk,'0') <>'1' " ;
IDataReader r= OracleHelper.GetDataReader(sql);
if (r.Read())
{
// Lock UserId 3 minutes
if (PrivateConst.ErrorTimes >3)
{
//LockUser(userName,3);
//RunPro_Logs(userName,"多次登录失败,封ID3分钟","0","Lock");
r.Close();
return false;
}
passWord = Encrypt.Encode(passWord,PrivateConst.EncryptKey);
//string DepassWord =Encrypt.PBDecode(r["usr_pwd"].ToString());
//SendMail.SendMailToManager(passWord +"-"+DepassWord);
if (passWord == r["usr_pwd"].ToString())
{
if(r["PWD_UPD_DATE"].ToString().CompareTo(PublicConst.DateNowToday8) <0 )
{
loginok = false;
}
else
{
Users myuser = new Users(); //myuser.CORP_NO = r["CORP_NO"].ToString();
myuser.CORP_NO ="";
myuser.USR_ID = r["USR_ID"].ToString();
myuser.USR_CNAME = r["USR_CNAME"].ToString();
myuser.LOGIN_ID = r["LOGIN_ID"].ToString(); //登录用ID,原Usr_id 作为内部标识符使用
myuser.USR_ENAME = PublicConst.RandomByNumber(4); //记录在线用户用,作为同一ID多次登录的识别符
//myuser.USR_PWD = r["USR_PWD"].ToString();
//myuser.USR_KIND = r["USR_KIND"].ToString();
//myuser.DEPT_NO = r["DEPT_NO"].ToString();
//myuser.BRANCH_NO = r["BRANCH_NO"].ToString();
myuser.LOGIN_TIME = PublicConst.RandomByTime14;
myuser.LOGIN_TIMES = CheckData.ToInt(r["LOGIN_TIMES"]);
myuser.LAST_IP = PublicConst.RemoteUserIp;
myuser.STOP_MK = r["STOP_MK"].ToString(); PrivateConst.User = myuser;
//SendMail.SendMailToManager(myuser.corp_no+myuser.UserZone);
if (CheckData.ToString(r["logout_time"]).CompareTo(PublicConst.RandomByTime14) <0)
{
// 记录登录情况
UserLogs(myuser.USR_ID);
loginok = true;
}
else
{
loginok =false;
}
}
}
else
{
loginok =false;
}
}
else
{
loginok = false;
}
r.Close(); if (loginok)
{
// Set Init Corp
// add 2006-11-15
//PrivateConst.User.CORP_NO = DataCommon.GetInitCorpNo(userName);
PrivateConst.User.CORP_NO = "";
PrivateConst.ErrorTimes =0;
return true;
}
else
{
PrivateConst.ErrorTimes +=1;
return false;
} }
id name pass time errcount当用户登入1次错误就把errcount+1,但errcount=5的时候就不给用户登入,并把time设置为当前系统时间,用户再次登入的时候就比较该时间是不是过去了10分钟,如果是就把errcount改为0,让用户登入