在我的应用程序中,我使用了一般流程来忘记密码:
1.用户在忘记密码页面的文本框中输入他的电子邮件ID,然后点击提交
2.电子邮件发送给用户,并带有重置密码链接。 我到这儿做了。我陷入了重置密码链接的编码部分。
在重置密码链接中,我想嵌入令牌和用户名,这样当用户点击链接时,他将被重定向到应用程序的重置密码页面,他可以重置密码。
“重置密码”链接在不同的类中编码(我为电子邮件设计了模板的方法),它将在另一个类中调用,我将调用sendemail方法。
我没有使用mvc的UserManager / Identity。我创建了自己的数据库表来管理用户信息。我在网上推荐的所有文章,博客都使用asp.net的默认会员提供商。我还经历了关于SO的this文章,但它只是解释了流程,没有编码帮助。
答案 0 :(得分:1)
Don
首先,在发送链接之前,更新User表中添加随机生成(强)令牌的列。
在链接中包含该令牌。
当他们点击链接时,让控制器操作方法将令牌作为参数接收,并从User表中查找令牌并让他们重置它。
当它被重置时,擦除令牌(从而断开链接以便重复使用)。您最好在单个数据库事务中执行此操作。
您可能还想为此令牌添加超时标记,这样如果他们在一段时间内没有重置它,它就会变得无效(如果有人以后要破解他们的电子邮件帐户,例如)。