ASP.Net MVC标识忘记密码
本文关键字:忘记 密码 标识 MVC Net ASP | 更新日期: 2023-09-27 18:21:05
我已经设置了一个快速页面来接受一个电子邮件地址,该地址将向它发送一封电子邮件,稍后将包含一个重置密码的链接或一个新的临时密码。
我的项目是一个新的ASP.Net MVC项目,使用Identity。我认为重置它的最好方法是发送一个指向电子邮件的链接,点击后用户可以输入一个新的链接,但我不确定该在链接指向的页面上放什么,以允许此功能并确保网站安全。
在这种情况下,发送一个新的临时邮件是否简单?
这太长了,无法放入评论中,所以如果没有实际的代码示例,希望我不会被否决:O
我见过一个常见的解决方案:
当用户请求重置密码时,将guid/随机哈希和过期日期时间记录到用户存储中的用户信息中(很可能是db)。
带有临时页面链接的电子邮件将发送到文件中用户的电子邮件地址(此解决方案确实需要有效的电子邮件地址)。
一旦临时页面被点击,链接可以被设置为立即过期(将过期日期设置为datetime.now,或者从用户信息中删除guid/hash,等等)。
这个临时页面URL可能在查询字符串中有记录用户的guid/hash,所以如果没有电子邮件中的链接,应该很难找到它。为了增加安全性,可以要求用户输入请求重置密码的用户名/电子邮件(因为页面上可能没有提及用户名/密码)。一旦完成(或没有)验证,就为用户提供重置密码的适当字段。
"忘记密码链接"上的另一条最后注释没有提供任何关于用户名是否"不存在"的信息,因为这可能会在你的网站上找到有效的用户名。
编辑:
这里有一个以前的堆栈溢出问题,它可能比我解释得更好(不要看"接受"的答案,看看投票最多的答案。:)
生成临时URL以重置密码
您可以在"Microsoft ASP.NET Identity Samples 2.1.0-alpha1"NuGet包的预发布版本中找到使用"忘记密码"功能的完整示例。
步骤
- 创建空的Web应用程序项目
- 安装示例项目:安装包Microsoft.AspNet.Identity.Samples-Pre
- 启动应用程序并注册新用户
- 进入登录页面,点击"忘记密码"。然后添加最近注册的用户电子邮件
然后,您将能够调试应用程序,检查"忘记密码"过程。