密码重置而不输入电子邮件(ASP.NET标识)

时间:2014-12-08 21:12:35

标签: asp.net asp.net-identity

当前的ASP.NET身份密码重置(通过电子邮件验证)要求用户输入电子邮件和要重置的新密码。但是,在大多数密码重置的情况下,只需要一个新密码。怎么可以这样做?

我发现通过收到电子邮件找到了用户ID,例如:

var user = await UserManager.FindByNameAsync(model.Email);

是否可以直接从密码重置的CallbackUrl获取用户ID,因为它包含用户ID?还是有更好的替代方法吗?

2 个答案:

答案 0 :(得分:0)

我过去如何处理此问题是将重置密码URL与重置密码功能关联并超时。

工作流:

用户点击忘记密码>电子邮件与包含GUID>的链接一起发送电子邮件的所有者点击链接> asp.net页面从URL>读取GUID页面检查请求是否仍在超时限制内>用户输入新密码&证实了这一点。

答案 1 :(得分:-2)

您如何验证尝试重置密码的用户是否为重置密码的帐户的所有者?用户名或电子邮件都需要知道您要重置密码的人,并且发送到电子邮件的密码重置链接是安全要求,而不仅仅是"功能"。

强烈建议阅读这个主题(不长,但非常有用)Troy Hunt: Everything you ever wanted to know about building a secure password reset feature