Csharp/C#教程:validation和更改用户的密码分享


validation和更改用户的密码

我有一个简单的C#窗体,用作登录,但也有一个表单来更改用户的密码。

当您单击“更改密码”时,表单将加载一个包含当前密码,新密码和确认新密码的文本框以及一个保存按钮。

我已经在标签中存储了用户名,以便可以检查当前密码是否在数据库中有效。

我将这些存储在我在Microsoft SQL Server 2008中创建的表中。

到目前为止,代码如下。

SqlConnection connect = new SqlConnection(str); connect.Open(); string username = label_username.Text; string password = textBox_Current.Text; string newPassword = textBox_New.Text; string confirmPassword = textBox_Verify.Text; string sqlquery = "UPDATE [Member] SET Password=@newpass where Username=@username"; SqlCommand cmd = new SqlCommand(sqlquery, connect); cmd.Parameters.AddWithValue("@newpass", textBox_Verify.Text); cmd.Parameters.AddWithValue("@username", label_username.Text); cmd.Parameters.AddWithValue("@password", textBox_Current.Text); cmd.Connection = connect; cmd.ExecuteNonQuery(); sqlDataReader reader = null; reader = cmd.ExecuteReader(); while (reader.Read()) { if ((textBox_New.Text == reader["newPassword"].ToString()) & (textBox_Verify.Text == (reader["confirmPassword"].ToString()))) { } } MessageBox.Show("Password Changed Successfully!"); this.Close(); 

执行上面的代码时,密码更改但我想:

如何才能做到这一点?

你真的不应该用纯文本存储这些密码。 您应该散列密码并存储散列。 然后,如果要检查密码是否正确,请将用户键入的密码哈希,并将其与为用户存储的哈希值进行比较。

但是,听起来您需要帮助从当前用户的数据库中获取值。 把这样的东西放在那里,应该为你做这件事。 请注意,就像我上面说的那样,这应该是检索密码的哈希值,而不是纯文本中的实际密码。

 string sqlquery = "SELECT Password FROM [Member] where Username=@username"; SqlCommand cmd = new SqlCommand(sqlquery, connect); cmd.Parameters.AddWithValue("@username", label_username.Text); cmd.Connection = connect; string currentPassword = (string)cmd.ExecuteScalar(); if (currentPassword == textBox_Current.Text) { // PASSWORD IS CORRECT, CHANGE IT, NOW. } else { // WOW EASY BUDDY, NOT SO FAST } 

首先,您应该在应用程序中使用密码哈希,因此数据库的密码字段应该包含哈希值。

假设这一点,为了实现你的目标,

  1. 考虑你的字符串用户名 – >哈希它 – >写一个查询来检查是否有散列值,并且存储在数据库中的用户密码的哈希值是相同的
  2. 在代码中考虑字符串密码和字符串newPassword – > Hash both – >检查哈希值是否相同
  3. 考虑字符串密码和字符串newPassword – >检查每个是否为空或长度为0

您还应按以下顺序执行这些任务:

1 – > 3 – > 2

希望这可以帮助…

上述就是C#学习教程:validation和更改用户的密码分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

  protected void btn_PasswordChange(object sender, EventArgs e) { string constring = DataAccess.GetConnection(); SqlConnection con = new `SqlConnection`(constring); { if (con.State != ConnectionState.Open) con.Open(); } string str = "select * from tbl_MemberLogin where Password='" + txtoldpwd.Text + "'"; DataTable DT = new DataTable(); DT = objdut.GetDataTable(str); if (DT.Rows.Count == 0) { lblmsg.Text = "Invalid current password"; lblmsg.ForeColor = System.Drawing.Color.Red; } else { SqlCommand cmd = new SqlCommand(); cmd.CommandText = "update tbl_MemberLogin set Password='" + txtnewpwd.Text + "' where UserName='" + Session["UserName"].ToString() + "'"; cmd.ExecuteNonQuery(); lblmsg.Text = "Password changed successfully"; lblmsg.ForeColor = System.Drawing.Color.Green; } } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1039388.html

(0)
上一篇 2022年1月26日
下一篇 2022年1月26日

精彩推荐