【发布时间】:2010-11-12 17:15:52
【问题描述】:
我正在开发一个应用程序,我应该为忘记密码的用户设计一个页面,并向他们发送新密码的电子邮件。我使用的是 ASP.NET Membership,密码格式应该是散列的。
我的问题是发送邮件失败,密码已更改,哇!没有工作可以做。
你的解决方案是什么?
【问题讨论】:
标签: asp.net membership forgot-password
我正在开发一个应用程序,我应该为忘记密码的用户设计一个页面,并向他们发送新密码的电子邮件。我使用的是 ASP.NET Membership,密码格式应该是散列的。
我的问题是发送邮件失败,密码已更改,哇!没有工作可以做。
你的解决方案是什么?
【问题讨论】:
标签: asp.net membership forgot-password
您应该向用户发送一封带有链接的电子邮件,他们可以在其中确认密码重置(否则您可以通过猜测其他用户的电子邮件来重置密码)。然后在链接页面上,用户将确认密码重置(甚至自己更改)。
但最好不要以任何形式发送密码。这是最安全的。
过程
【讨论】:
您可以在 aspnet_Membership 表中将受影响用户的 passwordFormat 值临时设置为“清除”,为他们分配密码,然后让电子邮件正常工作。
将 aspnet_Membership.passwordFormat 值设置为 0 会将格式更改为明文,这意味着它未加密。 不安全,但允许登录。之后,您可以重置密码,它会改回 2(加密)。
【讨论】:
如果电子邮件不起作用,ASP.NET 还支持密码恢复的问题和秘密答案方法。
【讨论】:
我不知道asp.net 中是否支持这样的功能。
但是,某些网站会向您发送一封电子邮件,其中包含一个可供点击的链接(该链接会在几天后过期)。单击哪个,将确保您承诺执行该操作(即仅在他们收到电子邮件并单击他们收到的链接后更改密码)。
【讨论】:
如果可以在您实际将更改提交到数据库之前判断电子邮件是否发送成功,这将是一个不错的选择。情况并非总是如此,但它可能适用于您的应用程序。
根据我的经验,如果电子邮件失败,ASP 通常会抛出异常。如果发生这种情况,请不要在数据库中执行任何操作,如果邮件通过则更改密码。这并不意味着他们会收到电子邮件,但无论如何您都无法解决电子邮件传输过程中出现的问题。上述选项将在此失败后适用。 ;)
【讨论】:
用户应该再次更改他们的密码,希望电子邮件会成功。
如果他们输入了错误的地址,他们应该联系可以更正其电子邮件地址的管理员。
【讨论】: