ASP.Net MVC身份忘记密码

时间:2014-09-06 14:55:41

标签: c# asp.net-mvc asp.net-identity

我已经设置了一个快速页面来接受一个电子邮件地址,该地址将向其发送一封电子邮件,该邮件稍后将包含重置密码或新临时密码的链接。

我的项目是一个使用Identity的新的ASP .Net MVC项目。我认为重置它的最佳方法是发送一个链接到电子邮件,当点击该链接时,用户可以输入一个新的电子邮件,但是我不知道链接所指向的页面上要放什么,到允许此功能并确保网站安全。

在这种情况下,发送一个新的临时版本是否最简单?

2 个答案:

答案 0 :(得分:1)

这太长了,无法容纳评论,所以希望在没有实际代码示例的情况下我不会被投票:O

我见过的常见解决方案:

当用户请求重置密码时,将guid / random hash和expiration datetime记录到用户存储中的用户信息中(最有可能是db)。

带有指向临时页面链接的电子邮件会发送到用户的电子邮件地址(此解决方案需要有效的电子邮件地址)。

点击临时页面后,链接可以设置为立即过期(将过期日期设置为datetime.now,或从用户信息中删除guid / hash等)。

此临时页面URL可能在查询字符串中具有记录用户的guid / hash,因此如果没有电子邮件中的链接,应该很难找到。为了增加安全性,用户可能需要输入要求重置密码的用户名/电子邮件(因为页面上可能没有提及用户名/密码。一旦完成此验证(或不完成),请向用户提供适当的字段来重置密码。

关于"忘记密码链接的另一个最后说明"不提供有关用户名是否不存在的任何信息"因为这可以在您的网站上找到有效的用户名。

编辑:

这里是以前的堆栈溢出问题,可能比我更好地解释它(不要看#34;接受"答案,看看最受欢迎的答案。)

Generate temporary URL to reset password

答案 1 :(得分:1)

您可以找到使用"忘记密码"的完整示例。 "Microsoft ASP.NET Identity Samples 2.1.0-alpha1" NuGet包的预发布版本中的功能。

步骤

  1. 创建空Web应用程序项目
  2. 安装示例项目:Install-Package Microsoft.AspNet.Identity.Samples -Pre
  3. 启动应用程序并注册新用户。
  4. 转到登录页面,点击"忘记密码"。然后添加最近注册的用户电子邮件。
  5. 然后,您将能够调试应用程序,检查"忘记密码"处理。

相关问题