1

使用 changepassword 控件更改密码时,我想将新密码设置为空白。为了支持这种情况,我从 changepassword 控件中删除了必填字段验证器并比较验证器,它仍然会触发

 ChangePassword1_ChangePasswordError(object sender, EventArgs e) event.  

我正在使用自定义会员提供程序,因此在第一次登录用户可能将他/她的密码设置为空白。在登录控制中,我已经删除了密码字段的必填字段验证器,它运行良好并验证了用户。但changepassord 控件没有。

我试过打电话

MembershipProvider.ChangePassword(ChangePassword1.UserName, ChangePassword1.CurrentPassword, ChangePassword1.NewPassword) 

ChangePassword1_ChangingPassword事件。这可行,但不会进行所有验证。

4

1 回答 1

0

从反射器工具阅读代码后,我发现 ChangePassword Control 调用

private void AttemptChangePassword()
{
    if ((user != null) && user.ChangePassword(this.CurrentPasswordInternal,newPasswordInternal, false))
        {...}
}

在上述方法中user.ChangePassword(),当旧密码或新密码为空或空白时返回 false。因此,为了克服这个问题,您可以扩展MembershipUser类和覆盖ChangePassword方法,如下所示。

public override bool ChangePassword(string oldPassword, string newPassword)
{
    return true;
}

这样做时,我们可以在密码字段中传递空白密码。

于 2012-07-17T07:46:34.677 回答