用戶名、密碼非法字符檢測


#region 登錄信息驗證
        /// <summary>
        /// 用戶名長度6-20位,由數字,字母,下划線組成,且不能以數字開頭,字母不區分大小寫。
        /// 密碼長度為8-20位,由數字,字母,下划線組成,且至少包含兩種及以上字符,字母區分大小寫。
        /// </summary>
        /// <param name="username"></param>
        /// <param name="password"></param>
        /// <returns></returns>
        public bool LoginInfoCheck(string username, string password)
        {
            /*(0-9):(48-57)*/
            /*(a-z):(97-122)*/
            /*(A-Z):(65-90)*/
            /*(_):95*/
            bool username_result = true;
            bool password_result = true;

            /*username check*/
            var un = username.ToCharArray();
            if (un.Length >= 6 && un.Length <= 20)//1.字符數限制
            {
                if (un[0] >= 48 && un[0] <= 57)//2.用戶名首位不能為數字
                {
                    LoginInfo = "用戶名首位不能為數字";
                    username_result = false;
                }
                else//3.非法字符檢測
                {
                    foreach (var u in un)
                    {
                        if ((u >= 48 && u <= 57) || (u >= 97 && u <= 122) || (u >= 65 && u <= 90) || u == 95)
                        {

                        }
                        else
                        {
                            //用戶名包含非法字符u
                            LoginInfo = $"用戶名包含非法字符'{u}'";
                            username_result = false;
                        }
                    }
                }

            }
            else
            {
                //用戶名長度異常
                LoginInfo = "用戶名長度要求:6~20位";
                username_result = false;
            }

            /*password check*/
            if (username_result)//用戶名正確才去檢測密碼
            {
                var pwd = password.ToCharArray();

                if (pwd.Length >= 8 && pwd.Length <= 20)//1.字符數限制條件
                {
                    int flag = 0;
                    bool flag_num = false;
                    bool flag_a = false;
                    bool flag__ = false;
                    /*2.非法字符檢測*/
                    foreach (var p in pwd)
                    {
                        if (p >= 48 && p <= 57)//數字
                        {
                            if (!flag_num) { flag += 1; }
                            flag_num = true;
                        }
                        else if (p >= 97 && p <= 122)//小寫字母
                        {
                            if (!flag_a) { flag += 1; }
                            flag_a = true;
                        }
                        else if (p >= 65 && p <= 90)//大寫字母
                        {
                            if (!flag_a) { flag += 1; }
                            flag_a = true;
                        }
                        else if (p == 95)//'_'
                        {
                            if (!flag__) { flag += 1; }
                            flag__ = true;
                        }
                        else
                        {
                            //密碼包含非法字符u
                            LoginInfo = $"密碼包含非法字符:'{p}'";
                            password_result = false;
                        }
                    }
                    /*3.至少兩種不同字符組成*/
                    if (flag < 2&&password_result)
                    {
                        LoginInfo = "密碼中字母、數字、下划線至少包含兩種";
                        password_result = false;
                    }
                }
                else
                {
                    //密碼長度超限
                    LoginInfo = "密碼長度要求:8~20位";
                    password_result = false;
                }
            }

            /*result check*/
            if (!username_result || !password_result)
            {
                return false;
            }
            else
            {
                return true;
            }
        }
        #endregion

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM