MembershipProvider的密码验证器?

ten*_*our 5 c# asp.net validation membership-provider

我想验证一个密码字段,用于在asp.net(.net 3.5)中创建/更新用户.密码将用于a MembershipProvider.

实现此目的的最佳方法是什么,以便验证将使用成员资格提供程序的配置设置?当然我可以编写代码,但这似乎是一个非常重要的东西,必须有一个简单的方法来做到这一点.

[编辑]澄清这是新用户或更改密码的密码字段,因此ValidateUser没有帮助.

Jef*_*ata 3

我想说答案是否定的,因为它SqlMembershipProvider没有在其ChangePasswordCreateUser方法中调用密码验证方法。使用 Reflector,您可以看到它在两种方法中都运行了相同的检查集(见下文)。所以我想说,像你正在做的那样编写你自己的函数是正确的方法。

if (newPassword.Length < this.MinRequiredPasswordLength)
{
    throw new ArgumentException(SR.GetString("Password_too_short", new object[] { "newPassword", this.MinRequiredPasswordLength.ToString(CultureInfo.InvariantCulture) }));
}
int num3 = 0;
for (int i = 0; i < newPassword.Length; i++)
{
    if (!char.IsLetterOrDigit(newPassword, i))
    {
        num3++;
    }
}
if (num3 < this.MinRequiredNonAlphanumericCharacters)
{
    throw new ArgumentException(SR.GetString("Password_need_more_non_alpha_numeric_chars", new object[] { "newPassword", this.MinRequiredNonAlphanumericCharacters.ToString(CultureInfo.InvariantCulture) }));
}
if ((this.PasswordStrengthRegularExpression.Length > 0) && !Regex.IsMatch(newPassword, this.PasswordStrengthRegularExpression))
{
    throw new ArgumentException(SR.GetString("Password_does_not_match_regular_expression", new object[] { "newPassword" }));
}
Run Code Online (Sandbox Code Playgroud)