发送电子邮件给用户以重置密码

Ser*_*ity 3 c# asp.net

流程是:

  1. 用户输入电子邮件地址
  2. 提交后,会向用户发送一封电子邮件
  3. 该电子邮件将包含一个链接,该链接将用户转到重置密码页面.

现在,如何根据电子邮件地址获取用户ID并对其进行加密?那应该链接什么?就像,我想要的是获取用户ID然后以某种方式加密它,以便链接不包含实际ID,该链接将使用户到一个页面,该页面将有文本框来重置密码.我很困惑如何去做.

这也是安全的方式吗?要重置这样的密码?

And*_*son 15

我通常在数据库中创建一个新表:

PasswordresetRequest包含以下字段:

  • Id:Guid - 密码重置请求的ID.
  • Accountid:string - 用户的用户名
  • Created:DataTime - 创建密码重置时的时间戳

流程如下:

  1. 用户请求密码在网站重置.
  2. 在PasswordresetRequest表中创建一条新记录.
  3. 将具有密码重置页面的链接的电子邮件发送给用户,该密码重置页面具有作为请求参数的密码请求id.
  4. 用户点击电子邮件中的链接,将其发送到密码重置页面.
  5. 如果从请求参数从数据库中获取密码请求.如果可以找到请求或者请求不超过例如12小时,则向用户呈现表格,其中他可以输入新密码.

这很容易实现,并且对于大多数站点来说足够安全.