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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。