我想在使用changepassword控件更改密码时将新密码设置为空白。 为了支持这种情况,我删除了必需的字段验证器并比较了changepassword控件中的验证器,它仍然会触发
ChangePassword1_ChangePasswordError(object sender, EventArgs e) event.
我正在使用自定义成员资格提供程序,因此在登录用户第一次时,他/她的密码可能为空。在登录控制中,我已删除了密码字段所需的字段验证程序,该程序运行良好并对用户进行身份验证。但是改变通道控制没有。
我试过调用
MembershipProvider.ChangePassword(ChangePassword1.UserName, ChangePassword1.CurrentPassword, ChangePassword1.NewPassword)
来自ChangePassword1_ChangingPassword
事件。这有效,但所有验证都不会发生。
答案 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;
}
在执行此操作时,我们可以在密码字段中传递空白密码。