【问题标题】:C# Possibility to change password one time per dayC# 可以每天更改一次密码
【发布时间】:2018-11-07 05:11:46
【问题描述】:

我必须编写代码来更改密码

if (txtNewPassword.Text == txtConfirmPassword.Text)
{
    mSQL = "SELECT * FROM User WHERE userName = '" + txtUserName.Text + "' AND password = '" + txtPassword.Text + "'";
    mDT_Save = mDBHelper.GetTable(mSQL);
    if (mDT_Save.Rows.Count > 0)
    {
        for (int i = 0; i < mDT_Save.Rows.Count; i++)
        {
            mSQL = "UPDATE User SET password = '" + txtConfirmPassword.Text + "' WHERE userName = '" + Convert.ToString(mDT_Save.Rows[i]["userName"]) + "'";
            mDBHelper.ExecuteSQLNonQuery(mSQL);
        }
        MessageBox.Show("Password Changed Successfully");
        txtPassword.Text = txtConfirmPassword.Text;
        return;
   }
   else
   {
        MessageBox.Show("User Not Found");
        return;
   }
}

通过这种方式,用户可以随时更改密码,但我希望用户每天只能更改一次密码。这个条件怎么写?

【问题讨论】:

  • 您可以将上次更改的密码DateTime 存储在数据库中,并在更新密码之前进行检查。还要考虑在存储密码之前对其进行哈希处理。您永远不应该以明文形式存储密码!
  • 您可以将用户上次更改密码的时间保存在数据库中,并使用该值来验证用户是否可以更改密码。
  • 尝试新密码'; -- ,然后看看使用SqlParameter和参数化查询。预期结果:数据库中所有用户的密码都设置为空字符串。

标签: c# login passwords


【解决方案1】:

您需要在用户表中添加一个新列,在其中存储一个 DateTime 值以及最后一个 DateTime chaging 密码。

您可以使用此函数获取实际的日期时间:

DateTime.Now

现在,如果您想检查自上次更改密码后是否已过 24 小时,请执行以下操作:

private bool CanChangePassword()
{
    DateTime dt = //value from database (last password change);

    DateTime now = DateTime.Now;

    if (dt == DateTime.MinValue || now > dt.AddHours(24))
    {
        return true;
    }
    return false;
}

【讨论】:

    【解决方案2】:

    使用DateTime changedpassworddate = DateTime.now(); 获取当前日期并将其放入变量中。

    将此变量存储在您的数据库中。

    下次用户输入他的密码时,您可以从数据库中获取 DateTime,将其与当前的 DateTime 进行比较,如下所示:

    if(DateTime.now() < changedpassworddate.AddDays(1))
    {your abort code}
    else
    {your continue code}
    

    使用添加天数方法意味着用户只能每 24 小时更改一次密码。所以在 23:59 更改它,然后在 0:01 更改它是行不通的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多