【问题标题】:How do I control the format MembershipUser.ResetPassword()如何控制 MembershipUser.ResetPassword() 格式
【发布时间】:2010-09-30 10:12:17
【问题描述】:

是否可以控制通过调用 MembershipUser.ResetPassword() 自动生成的密码格式?

我希望能够在生成的密码中允许或不允许某些特殊字符。

我正在使用密码格式为 Hashed 的 SqlMembershipProvider。

谢谢。

【问题讨论】:

  • 为什么要限制特殊字符?这几乎没有正当理由,而且对用户非常不友好。
  • @John Sheehan:另一方面,我收到了用户的抱怨,说生成的密码包含“难以找到”的字符。尝试告诉(非程序员)用户找到 |或键盘上的 ~ 键。消除难以输入的字符可以被认为是用户友好的举措。当然,您可以告诉用户复制粘贴密码,但我也遇到了阻力。
  • 您可以生成易于使用且安全的密码,但不应限制人们可以使用的密码。

标签: asp.net passwords asp.net-membership reset


【解决方案1】:

今天您还可以使用Membership.GeneratePassword 方法并传递MinRequiredPasswordLength 或使用Web.config 中已经定义的属性,如下所示:

  var newPassword =
                   // 0 = Number of non alphanumeric characters
                  Membership.GeneratePassword(Membership.MinRequiredPasswordLength, 0);

  user.ChangePassword(user.ResetPassword(), newPassword);

【讨论】:

    【解决方案2】:

    您可能希望分两步执行此操作,正如 Mark Fitzpatrick 所指出的:http://bytes.com/groups/net-asp/689452-how-reset-users-password-without-having-use-passwordrecovery#post2740740

    首先重置密码,然后立即将其更改为您喜欢的格式。显然,不建议使用 Mark 示例中的固定字符串 - 您希望实现 some random string generator

    user.ChangePassword(user.ResetPassword(), MyMethodToGenerateRandomPassword());
    

    【讨论】:

    • 我喜欢你的解决方案。我尝试了 David HAust 的解决方案,但在调用 MembershipUser.ResetPassword() 时,它仍然会给我超级加密密码。
    【解决方案3】:

    我希望可以使用一些配置设置,但覆盖 GeneratePassword() 方法适用于我的情况。

    我们已经有了一个可以生成随机密码字符串的加密实用程序类,所以它是一个非常快速的更改。

    【讨论】:

      【解决方案4】:

      看看这篇文章 - Changing the autogenerated password format in the SqlMembershipProvider

      我想出了一个快速破解 SqlMembershipProvider 以生成不太复杂的密码的方法,它就像创建一个从 SqlMembershipProvider 继承的新提供程序类,然后覆盖 GeneratePassword 方法一样简单。

      这不是一个完全解决的解决方案,但它可能会有所帮助。

      【讨论】:

        猜你喜欢
        • 2021-12-02
        • 2021-10-29
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        • 2017-09-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多