c# - 向用户发送电子邮件以重置密码

标签 c# asp.net

流程是:

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

现在,如何根据电子邮件地址获取用户 ID 并对其进行加密?那么链接应该是什么?就像,我想要的是获取用户 ID,然后以某种方式对其进行加密,以便链接不包含实际 ID,并且该链接会将用户带到一个页面,该页面将包含用于重置密码的文本框。我只是不知道该怎么做。

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

最佳答案

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

具有以下字段的密码重置请求:

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

流程如下:

  1. 用户在网站上请求重设密码。
  2. 在 PasswordresetRequest 表中创建了一条新记录。
  3. 一封包含密码重置页面链接的电子邮件已发送给用户,密码请求 ID 作为请求参数。
  4. 用户点击电子邮件中的链接,进入密码重置页面。
  5. 如果通过请求参数从数据库中获取密码请求。如果可以找到请求或者请求不早于例如12 小时后,系统会向用户显示一个表单,用户可以在其中输入新密码。

这实现起来非常简单,并且对于大多数网站来说足够安全。

关于c# - 向用户发送电子邮件以重置密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3784958/

相关文章:

托管在 IIS 上的 ASP.NET 5 项目

c# - 到 UI 的 MVVM 通知

javascript - 在asp中使用__doPostBack进行回发以过滤网格

ASP.NET DataReader 值

c# - StructureMap 不扫描当前文件夹中的程序集

c# - 是否可以在 C#、asp.net 中更改复选框的 GUI?

javascript - 通过 javascript 在 chrome 中使用新选项卡打开页面

c# - ASP.NET Web API - 如何更改 XML 对象图中的最大项数

c# - 使用 Jira SOAP API 的 PasswordEncoderNotFoundException

c# - 向派生类型添加属性