如何在更改密码登录控制ASP.net中允许当前密码为空或新密码为空

时间:2012-07-16 05:10:28

标签: asp.net

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

 ChangePassword1_ChangePasswordError(object sender, EventArgs e) event.  

我正在使用自定义成员资格提供程序,因此在登录用户第一次时,他/她的密码可能为空。在登录控制中,我已删除了密码字段所需的字段验证程序,该程序运行良好并对用户进行身份验证。但是改变通道控制没有。

我试过调用

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

来自ChangePassword1_ChangingPassword事件。这有效,但所有验证都不会发生。

1 个答案:

答案 0 :(得分: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;
}

在执行此操作时,我们可以在密码字段中传递空白密码。