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



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

 ChangePassword1_ChangePasswordError(object sender, EventArgs e) event.  

我正在使用自定义会员资格提供商,所以在第一次登录时,用户可能会将其密码设为空白。在登录控制中,我删除了密码字段所需的字段验证器,它可以很好地工作并验证用户。但是changepassord控件没有。

我试着打电话给

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

来自CCD_ 1事件。这是有效的,但不会进行所有验证。

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

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

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

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

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

最新更新