2009-06-07 15 views
1

私はASP.NETメンバーシップを使用して自分のサイトのユーザーを管理しています。 しかし、CreateUserWizardの助けを借りずに手動でユーザーアカウントを作成する必要があります。 必要なフィールドのテキストボックスを設定しましたが、今ではバリデーターを設定しています。ASP.NETメンバーシップパスワードの確認

質問:ユーザーがテキストボックスに入力したパスワードが有効かどうかを確認するバリデータを作成するにはどうすればよいですか?

パスワードには特定の形式が必要ですが、変更することができますが、バリデータが変更されても有効にしたいと思います。だから正規表現バリデーターは動作しません(私は思う)

答えて

3

簡単な方法ではないようです。しかし、あなたはMembershipCreateStatusのparamをとるMembership.CreateUserを使用することができます。

パスワードが有効であれば、作成したユーザオブジェクトがnullになり、MembershipCreateStatusがInvalidPasswordに設定されます(または他の作成統計情報米国)。

例:

MembershipCreateStatus membershipCreateStatus; 
MembershipUser newUser = Membership.CreateUser(userName, password, email, passwordQuestion, passwordAnswer, true, out membershipCreateStatus); 

// Check if the user was created succesfully 
if (newUser == null) 
{ 
    // membershipCreateStatus contains the information why the creation was not successful 
    if (membershipCreateStatus == MembershipCreateStatus.InvalidPassword) 
    { 
     // The password doesn't match the requirements 
    } 
} 
+1

もう1つの方法は、try catch内でMembership.CreateUser(username、password)を使用してMembershipCreateUserException例外をキャッチすることです。 MembershipCreateUserException.StatusCodeは、ユーザーの作成が失敗した理由を判断するために使用できるホストのステータスコードを提供します。 –

0

正規表現バリデーターの正規表現を動的に設定することができます。

private void Page_Load(object sender, EventArgs e) 
{ 
    passwordValidator.ValidationExpression = someConfiguration.GetPasswordValidationExpression(); 
} 
+0

しかし、正規表現式はどこにでも私が保存されていません。 現時点では、デフォルトのパスワード制限(> 6文字、少なくとも1つの数字、少なくとも1つの特殊文字)を使用します。 私のweb.configにアクセスして、メンバーシップメントプロバイダにminRequiredNonAlphanumericCharacters = "0"を追加すると、パスワードの制限が変更され、正規表現は使用されません。 Membership.IsThisPasswordValid(パスワード)のようなものを探していますが、存在しないようです。そのようなメソッドは、web.configにあるものに従ってパスワードを検証し、CustomValidatorで呼び出すことができます – Ove

0

CreateUserWizard(バリアント)を使用することに異論はありますか?それは追加のフィールドを必要とするために行うのですか、レイアウトの場合、その周りに方法があります。

  1. How to: Customize the CreateUserWizard - 「CreateUserWizardのステップをカスタマイズするには」のセクションをご覧ください。
  2. ASP.NET 2.0 CSS Friendly Control Adaptors

(これらは、ASP.NET 4.0に組み込ましようとしている)しかし、CreateUserWizardは、クライアント側のパスワードの検証を行いません。でも、デフォルト、私はまさにこの理由のために推測:(あり

関連する問題