我目前使用默认的会员提供商运行MVC2网站。一切都很好,但现在我发现忘记密码功能的需求。
经过一些谷歌搜索后,我能找到的唯一好的实现基于使用机器密钥进行安全性或问答功能。
这些实现的问题是我已经有了相当大的用户群。我现在无法将密码交换到机器密钥,因为我已经使用了哈希系统。
passwordFormat="Hashed"
我也不想强迫现有用户在事后添加问题和答案。问题和答案也不太理想,好像他们忘记了这些信息一样,也没有运气。
我理想的实现是用户点击忘记密码,输入用户名或电子邮件(理想情况下是电子邮件)。然后,他们将收到一封电子邮件,其中包含当前密码(我相信使用我使用的哈希方法是不可能的),一个新的随机密码,他们被告知要更改,或者一个带有令牌的链接,让他们一旦点击就重置密码它
有没有很好的指南可以快速完成这项工作?我能找到的一切都与使用机器密钥方法或问题和答案有关。我很惊讶我找不到任何东西,因为这是非常常见的网络功能。我很惊讶它甚至不是MVC附带的默认会员提供者的一部分。
我意识到令牌是最安全的,然后是随机密码,但是现在我对这三种情况中的任何一种都很开放。
如果您需要更多信息,请告诉我。
答案 0 :(得分:2)
如果用户的电子邮件地址已经以某种方式链接到他/她的帐户,则向用户发送电子邮件以更改其密码是一个很好的解决方案。理想的用户名必须是电子邮件地址。我就是这样做的
使用这种方法,您无需向他们发送密码,您实际上是在制作一项允许用户更改密码的功能。