我想在asp.net mvc中实现一个忘记密码功能,允许用户重置密码,并在这方面有一些问题:
让我们说在允许用户重置密码之前,我想验证一些额外的信息,例如他们的名字和姓氏。默认情况下,此信息不会存储在aspnet_regsql创建的表中。解决此类问题的建议方法是什么?我应该将这种信息存储在一个单独的表中,并使用表连接来验证OR是否应该修改aspnet_regsql生成的表的模式(如何?)以便我不必使用连接?我是否需要编写自定义提供程序,或者这不是必需的?
我在某些地方看过,例如在此post中,不是通过电子邮件发送临时密码,而是通过电子邮件发送一个URL,当点击该URL时,用户可以更改其密码。这是怎么做到的?如何确保网址在1小时后过期?
答案 0 :(得分:4)
我可以详细地写下你提出的问题的几个答案。有太多的东西无法进入实现细节,但我会尝试达到设计网站时我一直记住的要点。基本上,您可以(并且应该)与会员提供商合作,而不是解决它。这有点工作,但可以使用提供程序和ASP.NET MVC完成以下所有操作。
如果再想的话,我会扩展这个。
答案 1 :(得分:2)
我不知道这是否是推荐的方法,但您可以像您提到的那样创建一个单独的表,然后实现您自己的成员资格提供程序。这样,在密码重置时,您可以实现所需的其他功能。
第二部分: 我会生成一个令牌,阅读有关生成它的各种方法here。您可以使用日期/时间存储令牌,通过电子邮件将链接作为URL的一部分发送给用户的链接,然后您可以在用户点击它时将其与经过的时间量进行核对。 / p>