【问题标题】:ASP.NET Membership validate passwordASP.NET 成员身份验证密码
【发布时间】:2009-06-07 16:48:46
【问题描述】:

我使用 ASP.NET Membership 来管理我网站上的用户。 但是我需要手动创建用户帐户,而不需要 CreateUserWizard 的帮助。 我已经为必填字段设置了文本框,现在我正在设置验证器。

问题是:如何创建一个验证器来查看用户在文本框中输入的密码是否有效?

我知道密码必须具有特定的格式,但可以更改,我希望验证器即使更改也能正常工作。所以正则表达式验证器不起作用(我认为)

【问题讨论】:

    标签: asp.net membership


    【解决方案1】:

    似乎没有一个简单的方法。但是,您可以使用带有MembershipCreateStatus 参数的Membership.CreateUser

    如果密码有效,则创建的用户对象将为空,并且 MembershipCreateStatus 将设置为InvalidPassword(或任何其他创建状态)。

    例子:

    MembershipCreateStatus membershipCreateStatus;
    MembershipUser newUser = Membership.CreateUser(userName, password, email, passwordQuestion, passwordAnswer, true, out membershipCreateStatus);
    
    // Check if the user was created succesfully
    if (newUser == null)
    {
        // membershipCreateStatus contains the information why the creation was not successful
        if (membershipCreateStatus == MembershipCreateStatus.InvalidPassword)
        {
            // The password doesn't match the requirements
        }
    }
    

    【讨论】:

    • 另一种选择是在 try catch 中使用 Membership.CreateUser(username, password) 并捕获 MembershipCreateUserException 异常。 MembershipCreateUserException.StatusCode 提供了许多状态代码,您可以使用它们来确定创建用户失败的原因。
    【解决方案2】:

    您可以动态设置正则表达式验证器的正则表达式。

    private void Page_Load(object sender, EventArgs e)
    {
        passwordValidator.ValidationExpression = someConfiguration.GetPasswordValidationExpression();
    }
    

    【讨论】:

    • 但是我没有将正则表达式存储在任何地方。目前,我使用默认密码限制(>6 个字符、至少一个数字和至少一个特殊字符)。如果我转到我的 web.config 并将 minRequiredNonAlphanumericCharacters="0" 添加到我的会员提供程序中,这会更改密码限制,并且我不使用任何正则表达式。我正在寻找类似 Membership.IsThisPasswordValid(password) 的东西,但这似乎不存在。这样的方法会根据 web.config 中的内容验证密码,我可以在 CustomValidator 中调用它
    【解决方案3】:

    您反对使用 CreateUserWizard(一种变体)的原因是什么?如果它与需要其他字段或布局有关,则可以通过以下方式解决:

    1. How to: Customize the CreateUserWizard - 查看“自定义 CreateUserWizard 步骤”部分。
    2. ASP.NET 2.0 CSS Friendly Control Adaptors(这些将内置到 ASP.NET 4.0 中)

    但即使是默认的 CreateUserWizard 也不做客户端密码验证,我想正是因为这个原因:(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-17
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 2016-02-11
      • 1970-01-01
      相关资源
      最近更新 更多