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

Reflector ツールからコードを読み取った後、ChangePassword Control が呼び出していることがわかりました。

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

上記のメソッドでuser.ChangePassword()は、古いパスワードまたは新しいパスワードが null または空白の場合に false を返します。したがって、この問題を克服するために、以下のようにMembershipUserクラスを拡張してメソッドをオーバーライドできChangePasswordます。

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

これを行うと、パスワード フィールドに空白のパスワードを渡すことができます。

于 2012-07-17T07:46:34.677 に答える