志在指尖
用双手敲打未来

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)
{//interrorCountDateTimedt0=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清0CallEEPMethod.Execute(dbName,”sDEM2131″,”UpdateUserLoginError”,strs[1].ToLower()+”,”+”0″+”,”+DateTime.Now.ToString(“yyyy/MM/ddHH:mm:ss”));
}
}else{
execRes.Status=false;//次数+1if(errcount+1>1)
execRes.Message=”暗码接连输入过错”+(errcount+1).ToString()+”次。暗码接连输错5次将确定!”;elseexecRes.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″;elsedomain=”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;
}elseresult=true;
}
}returnresult;
}

未经允许不得转载:IT技术网站 » C#实现的Check Password和确定输错密码确定账户
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载