【问题标题】:Create unique and one time use link to reset password创建唯一且一次性使用的链接来重置密码
【发布时间】:2016-02-11 06:06:31
【问题描述】:

这是我第一个使用 c# 的 ASP.net 应用程序。就问题而言,如果用户忘记了他/她的密码,则有安全的过程来设置密码,我需要在用户的注册电子邮件 ID 上发送电子邮件,其中包含唯一且一次性使用的链接,该链接将打开一个包含两个字段的页面,例如“密码”和“确认密码”以及“提交”按钮为该用户设置新密码。我有一个发送电子邮件的代码,但问题是如何创建一个唯一且一次性使用的页面链接。如果您需要我的任何代码示例,我会分享它。谢谢。

【问题讨论】:

  • Identity 在 ASP 中实现了重置密码的功能 - 您可以在 Internet 上找到一些资源。如果您不使用Identity,则该模式非常简单:当用户请求重置密码时,创建随机 guid,将其存储在数据库中(例如在用户表中),然后通过电子邮件将其发送给您的用户。你可以放。 f.e 在重置页面的链接中,其中查询字符串中的某些参数 (f.e. token) 等于生成的 guid。接下来,只需进行验证 - 比较查询字符串和数据库中的 guid。

标签: c# asp.net email


【解决方案1】:

创建一个 guid 并针对用户保存在数据库中并为该 guid 创建一个标志,并在您发送的链接中传递相同的 guid,使用该 guid 取回用户并将密码和标志更改为链接已被使用。希望这会有所帮助

【讨论】:

  • 您也可以在使用该 guid 后简单地删除该行。减少检查是否存在,并且已经习惯于只检查是否存在
  • 是的,我同意你的观点,这肯定会减少搜索开销,我总是保留记录以供参考,@Übercoder
  • 您好,先生,虽然我使用相同的想法,但我使用 guid 创建了一个唯一链接并通过邮件发送,但我不知道如何发送与链接链接的 user_id 以及在加载链接页面时如何检测到那个user_id ...我想如果它解决了,事情就会解决。
  • 如果我无法检测到用户并且 guid 代码保存在他身上,那么事情将没有任何意义。
  • @DipakAkhade,在链接中单独使用 guid,从请求查询字符串中获取 guid id,并检查数据库中未使用 guid 的值以获取 user_id,guid 将是唯一的,所以您不必担心重复。现在使用这个 user_id 来更新密码。
猜你喜欢
  • 2019-11-11
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
相关资源
最近更新 更多