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

时间:2010-09-24 07:20:36

标签: c# asp.net

流程是:

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

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

3 个答案:

答案 0 :(得分:15)

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

PasswordresetRequest,包含以下字段:

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

流程如下:

  1. 网站上的用户请求密码重置。
  2. 在PasswordresetRequest表中创建一条新记录。
  3. 向用户发送一封电子邮件,其中包含密码重置页面的链接,并将密码请求ID作为请求参数。
  4. 用户点击电子邮件中的链接,将其发送到密码重置页面。
  5. 如果从请求参数从数据库中获取密码请求。如果可以找到请求或请求不比例如表格会在12小时内呈现给用户,他可以输入新密码。
  6. 实施起来非常简单,对大多数网站来说足够安全。

答案 1 :(得分:1)

有很多方法可以做到这一点。如果您主要关注的是安全性,一种方法是发送一个包含guid参数的链接,您可以创建并存储在您的端点(在db表,文件或任何适合您的情况下)以及与之关联的用户ID。当密码重置请求进入时,检查guid并查看db / file /中是否有一个匹配值,然后继续密码重置。不要忘记从存储中删除guid以防止多次使用相同的链接。

答案 2 :(得分:0)

确切地说,这个主题有一个轨道广播:http://railscasts.com/episodes/274-remember-me-reset-password?view=asciicast