千家信息网

C#怎么实现密码验证与输错密码账户锁定

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本文小编为大家详细介绍"C#怎么实现密码验证与输错密码账户锁定",内容详细,步骤清晰,细节处理妥当,希望这篇"C#怎么实现密码验证与输错密码账户锁定"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入
千家信息网最后更新 2026年11月04日C#怎么实现密码验证与输错密码账户锁定

本文小编为大家详细介绍"C#怎么实现密码验证与输错密码账户锁定",内容详细,步骤清晰,细节处理妥当,希望这篇"C#怎么实现密码验证与输错密码账户锁定"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

C#实现的Check Password,并根据输错密码的次数分情况锁定账户:如果输入错误3次,登录账户锁定5分钟并提示X点X分后重试登录。如果5分钟后再次输入,累计输入错误密码累计达到5次。则账户会被永久锁定,需联系系统管理员进行把数据库中的输入错误的次数(errorcount)进行清零解锁才能登陆。实现代码如下:

public  class UserInfo1    {        public string Error_count { get; set; }        public string Error_time { get; set; }    }
public ExecutionResult CheckAccountPwd(string account, string password)        {            ExecutionResult execRes;            execRes = new ExecutionResult();            string[] strs = account.Split(new string[] { "\\" }, StringSplitOptions.RemoveEmptyEntries);            if (strs.Length < 2)            {                execRes.Status = false;                execRes.Message = "无效的账号。";            }            else            {                UserInfo1 info1 = 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)                    {                        int errcount = Convert.ToInt32(info1.Error_count);                        DateTime errtime = Convert.ToDateTime(info1.Error_time);                        if (errcount != 5)                        {                            //int errorCount                            DateTime dt0 = DateTime.Now;                            DateTime dt1 = errtime.AddMinutes(5);                            double s = (dt1 - dt0).TotalSeconds;                            if (errcount == 3 && s > 0)                            {                                execRes.Status = false;                                execRes.Message = "密码连续输入错误3次,请于 " + errtime.AddMinutes(+5).ToString("yyyy-MM-dd HH:mm:ss") + " 之后重试,thanks!";                            }                            else                            {                                if (CheckFromLDAP(strs[1], password, strs[0]))                                {                                    CPU.Models.UserInfo userInfo = CheckUser(strs[1]);                                    if (userInfo == null)                                    {                                        execRes.Status = false;                                        execRes.Message = "您没有权限操作此系统!";                                    }                                    else                                    {                                        execRes.Status = true;                                        execRes.Anything = userInfo;                                        //error count 清0                                        CallEEPMethod.Execute(dbName, "sDEM2131", "UpdateUserLoginError", strs[1].ToLower() + ","+"0" + "," + DateTime.Now.ToString("yyyy/MM/dd HH: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/dd HH:mm:ss"));                                    if (errcount + 1 == 3)                                        execRes.Message = "密码连续输入错误" + (errcount + 1).ToString() + "次,请于 " + dt0.AddMinutes(5).ToString("yyyy-MM-dd HH: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 = "找不到此账号,请重新输入!";                }            }            return execRes;        }

根据登录不同的网域进行Form验证

private bool CheckFromLDAP(string ntID, string ntPWD, string domain)//根据登录的不同网域进行Form验证        {            bool result = false;            string strUser;            try            {                strUser = domain + "\\" + ntID;                if (domain.ToLower().Equals("gi"))                    domain = "gi.compal.com";                else if (domain.ToLower().Equals("cqc_cci"))                    domain = "10.140.1.1";                else if (domain.ToLower().Equals("vn"))                    domain = "10.144.2.101";                else if (domain.ToLower().Equals("njp_cci"))                    domain = "10.128.50.1";                else                    domain = "compal.com";                DirectoryEntry entry = new DirectoryEntry("LDAP://" + domain, strUser, ntPWD);                using (DirectorySearcher searcher = new DirectorySearcher(entry))                {                    searcher.Filter = string.Format("(&(objectClass=user)(sAMAccountName={0}))", ntID);                    SearchResult sr = searcher.FindOne();                    using (SearchResultCollection results = 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 (Exception ex)            {                //LogHelper.Error(ex.Message);            }            return result;        }

根据不同的用户登录进行权限管理

public bool CheckPermission(string controllerName, string actionName,string plant, string userID)        {            bool result = false;            //if (actionName.StartsWith("_"))            //    actionName = actionName.Substring(1);            UserInfo userInfo = CheckUser(userID);            if (userInfo!=null)            {                if (controllerName == "Home")                    result = true;                else if (userInfo.Permissions.Contains(controllerName))                {                    if (!string.IsNullOrEmpty(plant))                    {                        if (userInfo.PlantCode.ToLower() == plant.ToLower() || userInfo.PlantCode == "ALL")                            result = true;                    }                    else                        result = true;                }            }            return result;        }

读到这里,这篇"C#怎么实现密码验证与输错密码账户锁定"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

密码 输入 错误 账户 验证 账号 登录 C# 管理 不同 文章 次数 管理员 联系 内容 权限 系统 网域 妥当 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 厦门中拓互联网络科技有限公司 美国互联网科技巨头监管 互联网科技金融 鑫亿盛互联网科技 广州善班互联网科技 互联网科技博主是什么意思 字节跳动和互联网科技 互联网科技创新服务 赶超互联网科技 微信多开 搜狐科技互联网 中国科技创新与世界互联网大会 深圳市罗太互联网科技有限公司 工业互联网等科技实现智能化赋能 特约风豹互联网科技为什么扣费 广州富喜互联网络科技 云南省自由互联网科技有限公司 互联网公司属于科技吗 互联网金融运营模式中的金融科技 科技和互联网行业的特点 小牛互联网科技有限公司地址 互联网科技工作委员会副主任毛军 圆梦互联网科技 上海挚品互联网科技 奇酷互联网络科技 天津摩尔互联网科技 互联网科技实习生岗位职责 银川新华互联网科技职业技术培训学校图片 辽宁互联网新科技 互联网科技快讯热点 第三届互联网大会安防黑科技
0