C#实现Check Password和锁定输错密码锁定账户功能
银行卡大家都使用,在密码输错超过限制次数之后,就容易被锁死,智能到银行柜台才能解锁,那么这一功能如果实现的呢,今天小编通过实例代码给大家详细讲解,一起跟随小编看看吧。
C#实现的CheckPassword,并根据输错密码的次数分情况锁定账户:如果输入错误3次,登录账户锁定5分钟并提示X点X分后重试登录。如果5分钟后再次输入,累计输入错误密码累计达到5次。则账户会被永久锁定,需联系系统管理员进行把数据库中的输入错误的次数(errorcount)进行清零解锁才能登陆。实现代码如下:
publicclassUserInfo1 { publicstringError_count{get;set;} publicstringError_time{get;set;} } publicExecutionResultCheckAccountPwd(stringaccount,stringpassword) { ExecutionResultexecRes; execRes=newExecutionResult(); string[]strs=account.Split(newstring[]{"\\"},StringSplitOptions.RemoveEmptyEntries); if(strs.Length<2) { execRes.Status=false; execRes.Message="无效的账号。"; } else { UserInfo1info1=null; execRes=CallEEPMethod.Execute(dbName,"sDEM2131","GetUserInfo",strs[1].ToLower()); if(execRes.Status&&execRes.Anything!=null) { info1=JsonConvert.DeserializeObject(execRes.Anything.ToString()); if(info1!=null) { interrcount=Convert.ToInt32(info1.Error_count); DateTimeerrtime=Convert.ToDateTime(info1.Error_time); if(errcount!=5) { //interrorCount DateTimedt0=DateTime.Now; DateTimedt1=errtime.AddMinutes(5); doubles=(dt1-dt0).TotalSeconds; if(errcount==3&&s>0) { execRes.Status=false; execRes.Message="密码连续输入错误3次,请于"+errtime.AddMinutes(+5).ToString("yyyy-MM-ddHH:mm:ss")+"之后重试,thanks!"; } else { if(CheckFromLDAP(strs[1],password,strs[0])) { CPU.Models.UserInfouserInfo=CheckUser(strs[1]); if(userInfo==null) { execRes.Status=false; execRes.Message="您没有权限操作此系统!"; } else { execRes.Status=true; execRes.Anything=userInfo; //errorcount清0 CallEEPMethod.Execute(dbName,"sDEM2131","UpdateUserLoginError",strs[1].ToLower()+","+"0"+","+DateTime.Now.ToString("yyyy/MM/ddHH:mm:ss")); } } else { execRes.Status=false; //次数+1 if(errcount+1>1) execRes.Message="密码连续输入错误"+(errcount+1).ToString()+"次。密码连续输错5次将锁定!"; else execRes.Message="密码输入错误!"; dt0=DateTime.Now; CallEEPMethod.Execute(dbName,"sDEM2131","UpdateUserLoginError",strs[1].ToLower()+","+(errcount+1).ToString()+","+DateTime.Now.ToString("yyyy/MM/ddHH:mm:ss")); if(errcount+1==3) execRes.Message="密码连续输入错误"+(errcount+1).ToString()+"次,请于"+dt0.AddMinutes(5).ToString("yyyy-MM-ddHH:mm:ss")+"之后重试,thanks!"; if(errcount+1==5) execRes.Message="账号密码连续输入错误5次,已锁定!请联系管理员解锁,thanks!"; } } } else { execRes.Status=false; execRes.Message="账号密码连续输入错误5次,已锁定!请联系管理员解锁,thanks!"; } } else { execRes.Status=false; execRes.Message="找不到此账号,请重新输入!"; } } else { execRes.Status=false; execRes.Message="找不到此账号,请重新输入!"; } } returnexecRes; }
根据登录不同的网域进行Form验证
privateboolCheckFromLDAP(stringntID,stringntPWD,stringdomain)//根据登录的不同网域进行Form验证 { boolresult=false; stringstrUser; try { strUser=domain+"\\"+ntID; if(domain.ToLower().Equals("gi")) domain="gi.compal.com"; elseif(domain.ToLower().Equals("cqc_cci")) domain="10.140.1.1"; elseif(domain.ToLower().Equals("vn")) domain="10.144.2.101"; elseif(domain.ToLower().Equals("njp_cci")) domain="10.128.50.1"; else domain="compal.com"; DirectoryEntryentry=newDirectoryEntry("LDAP://"+domain,strUser,ntPWD); using(DirectorySearchersearcher=newDirectorySearcher(entry)) { searcher.Filter=string.Format("(&(objectClass=user)(sAMAccountName={0}))",ntID); SearchResultsr=searcher.FindOne(); using(SearchResultCollectionresults=searcher.FindAll()) { if(results.Count>0) { //if(results[0].Properties.Contains("employeeID")) //empID=results[0].Properties["employeeID"][0].ToString(); //else //empID=results[0].Properties["extensionattribute3"][0].ToString(); result=true; } } } } catch(Exceptionex) { //LogHelper.Error(ex.Message); } returnresult; }
根据不同的用户登录进行权限管理
publicboolCheckPermission(stringcontrollerName,stringactionName,stringplant,stringuserID) { boolresult=false; //if(actionName.StartsWith("_")) //actionName=actionName.Substring(1); UserInfouserInfo=CheckUser(userID); if(userInfo!=null) { if(controllerName=="Home") result=true; elseif(userInfo.Permissions.Contains(controllerName)) { if(!string.IsNullOrEmpty(plant)) { if(userInfo.PlantCode.ToLower()==plant.ToLower()||userInfo.PlantCode=="ALL") result=true; } else result=true; } } returnresult; }
总结
以上所述是小编给大家介绍的C#实现CheckPassword和锁定输错密码锁定账户功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。