【问题标题】:Problem when password resetting in ASP.NET在 ASP.NET 中重置密码时的问题
【发布时间】:2010-11-12 17:15:52
【问题描述】:

我正在开发一个应用程序,我应该为忘记密码的用户设计一个页面,并向他们发送新密码的电子邮件。我使用的是 ASP.NET Membership,密码格式应该是散列的。

我的问题是发送邮件失败,密码已更改,哇!没有工作可以做。

你的解决方案是什么?

【问题讨论】:

    标签: asp.net membership forgot-password


    【解决方案1】:

    您应该向用户发送一封带有链接的电子邮件,他们可以在其中确认密码重置(否则您可以通过猜测其他用户的电子邮件来重置密码)。然后在链接页面上,用户将确认密码重置(甚至自己更改)。

    但最好不要以任何形式发送密码。这是最安全的。

    过程

    1. 用户通过电子邮件请求重置密码。
    2. 他们会收到一封带有链接的电子邮件
    3. 他们单击该链接并提供一个新密码,该密码会立即经过哈希处理并存储在系统中。

    【讨论】:

    • 太棒了!但是我可以像 ASP.NET 那样对密码进行哈希处理吗?我的意思是我可以将它直接存储到用户表中吗?
    • 您可以调用 Membership.UpdateUser 并设置新密码。
    【解决方案2】:

    您可以在 aspnet_Membership 表中将受影响用户的 passwordFormat 值临时设置为“清除”,为他们分配密码,然后让电子邮件正常工作。

    将 aspnet_Membership.passwordFormat 值设置为 0 会将格式更改为明文,这意味着它未加密。 不安全,但允许登录。之后,您可以重置密码,它会改回 2(加密)。

    【讨论】:

    • 这是一个很好的解决方案,但我不确定它是否有效?你确定吗?
    【解决方案3】:

    如果电子邮件不起作用,ASP.NET 还支持密码恢复的问题和秘密答案方法。

    【讨论】:

      【解决方案4】:

      我不知道asp.net 中是否支持这样的功能。

      但是,某些网站会向您发送一封电子邮件,其中包含一个可供点击的链接(该链接会在几天后过期)。单击哪个,将确保您承诺执行该操作(即仅在他们收到电子邮件并单击他们收到的链接后更改密码)。

      【讨论】:

      • 你的意思是我应该有一个表来存储用户的随机值,以检查用户是否是我发送该电子邮件的那个用户?
      【解决方案5】:

      如果可以在您实际将更改提交到数据库之前判断电子邮件是否发送成功,这将是一个不错的选择。情况并非总是如此,但它可能适用于您的应用程序。

      根据我的经验,如果电子邮件失败,ASP 通常会抛出异常。如果发生这种情况,请不要在数据库中执行任何操作,如果邮件通过则更改密码。这并不意味着他们会收到电子邮件,但无论如何您都无法解决电子邮件传输过程中出现的问题。上述选项将在此失败后适用。 ;)

      【讨论】:

      • 这是一个很好的解决方案,但是用户看到两封电子邮件,一封用于测试,一封用于他的密码,这并不好。
      【解决方案6】:

      用户应该再次更改他们的密码,希望电子邮件会成功。

      如果他们输入了错误的地址,他们应该联系可以更正其电子邮件地址的管理员。

      【讨论】:

        猜你喜欢
        • 2011-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-18
        • 2013-04-06
        • 2015-02-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多