【问题标题】:Why does Membership.GeneratePassword give me Nonalphanumeric when I specifiy 0?为什么当我指定 0 时 Membership.GeneratePassword 给我非字母数字?
【发布时间】:2012-09-12 14:47:05
【问题描述】:

我用过 Membership.GeneratePassword(10, 0) 在我的 C# 应用程序代码中。 GeneratePassword 方法生成指定长度的随机密码。

第二个参数指定生成的密码中非字母数字字符(如@、#、!、%、& 等)的最小数量。

我不想要任何非字母数字字符,所以我指定为零。 但是,它仍然失败,因为我在执行时获得了包含非字母数字内容的密码 Membership.GeneratePassword(10, 0)

Lg|1-F;?a4

为什么是竖线(|)、连字符(-)、分号和问号?

【问题讨论】:

  • 不幸的是,GeneratePassword 指定了非字母字符的最小而不是最大数量。你需要自己动手 - 见here
  • 为什么非字母数字字符对您来说是个问题?
  • 一些使用 Web 应用程序的用户具有低级计算机技能。他们不知道为管道(|)按什么键?
  • @Damien_The_Unbeliever 一些使用 Web 应用程序的用户具有低级计算机技能。他们不知道按什么键(|)

标签: c# asp.net asp.net-membership forgot-password non-alphanumeric


【解决方案1】:

我最终使用了下面的解决方法,它使用正则表达式去除非字母数字字符并用随机数替换它们。

String newPassword = Membership.GeneratePassword(8, 0); //Second arg only guarantees a minimum number (not maximum) number of alphanumeric characters.
Random rng = New Random();
newPassword = Regex.Replace(newPassword, @"[^a-zA-Z0-9]", rng.Next(0, 10).ToString());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-29
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 2016-05-28
    相关资源
    最近更新 更多