如何制作“重设密码”?

Posted

技术标签:

【中文标题】如何制作“重设密码”?【英文标题】:How to make a "Reset Password"? 【发布时间】:2013-03-23 19:07:53 【问题描述】:

如何让此代码发送新生成的密码或用户发送旧密码?

我想出了如何让代码发送电子邮件!发送者不是问题,但接收者才是问题。其中EmailAdresNaar 必须替换为某人放入文本框或其他内容的电子邮件。

public void SendEmail()
    



        string emailAdresVan = "invoerenSVP";
        string password = "invoerenSVP";


        MailMessage msg = new MailMessage();

        msg.From = new MailAddress(emailAdresVan);
        msg.To.Add(new MailAddress(EmailAdresNaar));
        msg.Subject = Onderwerp;
        msg.Body = Bericht;
        msg.IsBodyhtml = true;


        SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", 587);

        NetworkCredential loginInfo = new NetworkCredential(emailAdresVan, password);


        smtpClient.EnableSsl = true;
        smtpClient.UseDefaultCredentials = true;
        smtpClient.Credentials = loginInfo;

        smtpClient.Send(msg); 

       
   

【问题讨论】:

使用YourTextBoxControlID.Text获取用户在文本框中输入的值并使用它。 重置程序不应该发送新密码或任何密码。 ***.com/questions/2734367/…***.com/questions/1102781/… 【参考方案1】:

这样放置你需要的数据:

msg.From = new MailAddress("support@yoursite.com");
msg.To.Add(new MailAddress(UserEmailTextBox.Text));
msg.Subject = "New Password";
msg.Body = GenerateNewPassword();

以及方法GenerateNewPassword() 的示例,但是您应该使返回随机生成的新密码变得更加复杂(您需要谷歌以了解不同的实现方式):

public string GenerateNewPassword()

    string new_pass = "";
    // generate new password
    return new_pass;

理想情况下,您应该创建另一个页面,例如PasswordsReset.aspx,并使用某种GUID 向用户发送指向此页面的链接,用户可以自己创建新密码。

【讨论】:

但是用户已经有一个注册电子邮件的帐户,我需要告诉我的电子邮件发件人他重置了链接到他或她放入文本框中的电子邮件的密码。跨度> 这是你需要自己定义的业务逻辑。您现在明白为什么需要PasswordsReset.aspx - 不允许任何用户重置其他用户的密码。您需要发送用户 GUID,将其保存到数据库,并在用户点击链接并重置密码后,将新密码保存到数据库中的代码隐藏到用户在 PasswordsReset 页面上提供的密码。

以上是关于如何制作“重设密码”?的主要内容,如果未能解决你的问题,请参考以下文章

重设 macOS 用户帐户的密码,你们会吗?

Mysql密码忘记后如何重设密码

重设遗忘ROOT用户的密码

Ubuntu原设账户密码无效

树莓派重设密码

Macbook 忘记开机密码 重设密码