您的位置:首页 > 编程语言 > C#

密码输入三次错误后锁定用户功能C#源代码

2017-03-14 16:11 1641 查看
#region 密码输入三次错误后锁定用户功能

        #region 增加错误次数的方法

        ///<summary>

        ///增加错误次数的方法

        ///</summary>

        private void IncErrorTime()

        {

            string ConnStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

            using (SqlConnection conn = new SqlConnection(ConnStr))

            {

                using (SqlCommand updateCmd = conn.CreateCommand())

                {

                    updateCmd.CommandText = "update T_Admin set errortime=errortime+1 whereUsername=@username";

                    updateCmd.Parameters.Add(new SqlParameter("username", cmbuserName.Text));

                    conn.Open();

                    updateCmd.ExecuteNonQuery();

                }

            }

        } 

        #endregion

        #region 错误次数清0

        ///<summary>

        ///错误次数清0

        ///</summary>

        private void NotErrorTime()

        {

            string ConnStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

            using (SqlConnection conn = new SqlConnection(ConnStr))

            {

                using (SqlCommand updateCmd = conn.CreateCommand())

                {

                    updateCmd.CommandText = "update T_Admin set errortime=0 whereUsername=@username";

                    updateCmd.Parameters.Add(new SqlParameter("username", cmbuserName.Text));

                    conn.Open();

                    updateCmd.ExecuteNonQuery();

                }

            }

        } 

        #endregion

        #region 密码错误3次,记录当前时间加30分钟

        ///<summary>

        ///密码错误3次,记录当前时间加30分钟

        ///</summary>

        private void IncLoginTime()

        {

            string ConnStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

            using (SqlConnection conn = new SqlConnection(ConnStr))

            {

                using (SqlCommand updateCmd = conn.CreateCommand())

                {

                    updateCmd.CommandText = "update T_Admin set logintime=@logintime whereUsername=@username";

                    DateTime logintime = DateTime.Now.AddMinutes(30);

                    updateCmd.Parameters.Add(new SqlParameter("username", cmbuserName.Text));

                    updateCmd.Parameters.Add(new SqlParameter("logintime", logintime.ToString()));

                    conn.Open();

                    updateCmd.ExecuteNonQuery();

                }

            }

        } 

        #endregion

        #region 按钮事件判断用户登录3次失效后锁定用户30分钟

        private void BtnClike()

        {

            string username = cmbuserName.Text;

            string password = txtPwd.Text;

            string ConnStr = ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString;

            using (SqlConnection conn = new SqlConnection(ConnStr))

            {

                using (SqlCommand cmd = conn.CreateCommand())

                {

                    cmd.CommandText = "select * from T_Admin whereusername=@username";

                    cmd.Parameters.Add(new SqlParameter("username", username));

                    conn.Open();

                    using (SqlDataReader reader = cmd.ExecuteReader())

                    {

                        if (reader.Read())

                        {

                            //用户存在

                            string dbpassword = reader.GetString(reader.GetOrdinal("password"));

                            DateTime logintime = reader.GetDateTime(reader.GetOrdinal("logintime"));

                            //判断当前时间是是服务器允许登录时间

                            if (logintime > DateTime.Now)

                            {

                                MessageBox.Show("一定时间内禁止登录");

                                return;

                            }

                            //如果密码正确

                            if (dbpassword == txtPwd.Text)

                            {

                                NotErrorTime();

                                MessageBox.Show("登录成功!");

                            }

                            //如果密码错误

                            else

                            {

                                int errortime = reader.GetInt32(reader.GetOrdinal("errortime"));

                                if (errortime >= 2)

                                {

                                    MessageBox.Show("密码错误次数太多!");

                                    IncLoginTime();

                                    NotErrorTime();

                                    return;

                                }

                                MessageBox.Show("密码错误!");

                                IncErrorTime();//密码错误,次数加1

                            }

                        }

                        else//用户名不存在

                        {

                            MessageBox.Show("用户名不存在!");

                            return;

                        }

                    }

                }

            }

        }

        #endregion

        #endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐