ValidatePasswordEventArgs クラス
アセンブリ: System.Web (system.web.dll 内)
構文
解説ValidatingPassword イベントは、メンバシップ プロバイダの CreateUser、ChangePassword、または ResetPassword の各メソッドが呼び出されたときに発生します。
ValidatingPassword イベントを処理して、メンバシップ ユーザーのパスワードの形式と値を検証できます。
ValidatingPassword イベントで、Cancel プロパティを true に設定することにより、現在の CreateUser、ChangePassword、または ResetPassword の各アクションをキャンセルできます。
Cancel プロパティを true に設定して現在のアクションをキャンセルする場合、FailureInformation プロパティに、パスワード検証エラーの原因を説明する例外を設定できます。呼び出し元のメソッドは、FailureInformation プロパティに設定された例外をスローします。FailureInformation プロパティが null 参照 (Visual Basic では Nothing) である場合、呼び出し元は汎用パスワード検証エラー例外をスローします。
使用例次のコード例に、ユーザーが入力したパスワードの形式を検証し、必要な形式と一致しない場合は処理をキャンセルする ValidatingPassword イベントを示します。
Public Sub Page_Load() AddHandler Membership.ValidatingPassword, _ New MembershipValidatePasswordEventHandler(AddressOf OnValidatePassword) End Sub Public Sub OnValidatePassword(sender As Object, _ args As ValidatePasswordEventArgs) Dim r As System.Text.RegularExpressions.Regex = _ New System.Text.RegularExpressions.Regex("(?=.{6 ,})(?=(.*\d){1,})(?=(.*\W){1,})") If Not r.IsMatch(args.Password) Then args.FailureInformation = _ New HttpException("Password must be at least 6 characters long and " & _ "contain at least one number and one special character.") args.Cancel = True End If End Sub
public void Page_Load() { Membership.ValidatingPassword += new MembershipValidatePasswordEventHandler(OnValidatePassword); } public void OnValidatePassword(object sender , ValidatePasswordEventArgs args) { System.Text.RegularExpressions.Regex r = new System.Text.RegularExpressions.Regex(@"(?=.{6,})(?=(.*\d){1 ,})(?=(.*\W){1,})"); if (!r.IsMatch(args.Password)) { args.FailureInformation = new HttpException("Password must be at least 6 characters long and " + "contain at least one number and one special character."); args.Cancel = true; } }
.NET Framework のセキュリティ
継承階層System.EventArgs
System.Web.Security.ValidatePasswordEventArgs
スレッド セーフ
プラットフォームWindows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照ValidatePasswordEventArgs コンストラクタ
アセンブリ: System.Web (system.web.dll 内)
構文Dim userName As String Dim password As String Dim isNewUser As Boolean Dim instance As New ValidatePasswordEventArgs(userName, password, isNewUser)
public function ValidatePasswordEventArgs ( userName : String, password : String, isNewUser : boolean )
解説ValidatePasswordEventArgs コンストラクタは、CreateUser、ChangePassword、および ResetPassword の各メソッド実装におけるメンバシップ プロバイダ実装によって使用されます。
使用例次のコード例に、新しい ValidatePasswordEventArgs オブジェクトを作成し、ValidatingPassword イベントに渡すサンプル ChangePassword 実装を示します。
Public Overrides Function ChangePassword(username As String, _ oldPwd As String, _ newPwd As String) As Boolean If Not ValidateUser(username, oldPwd) Then Return False End If Dim args As ValidatePasswordEventArgs = _ New ValidatePasswordEventArgs(username, newPwd, True) OnValidatingPassword(args) If args.Cancel Then If Not args.FailureInformation Is Nothing Then Throw args.FailureInformation Else Throw New MembershipPasswordException("Change password canceled due to New password validation failure.") End If End If Dim conn As OdbcConnection = New OdbcConnection(ConnectionString) Dim cmd As OdbcCommand = New OdbcCommand("UPDATE [" & TableName & "]" & _ " SET Password = ?, LastPasswordChangedDate = ? " & _ " WHERE Username = ? AND Password = ? AND ApplicationName = ?", conn) cmd.Parameters.Add("@Password", OdbcType.VarChar, 128).Value = EncodePassword(newPwd) cmd.Parameters.Add("@LastPasswordChangedDate", OdbcType.DateTime).Value = DateTime.Now cmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = username cmd.Parameters.Add("@OldPassword", OdbcType.VarChar, 128).Value = oldPwd cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = ApplicationName Dim rowsAffected As Integer = 0 Try conn.Open() rowsAffected = cmd.ExecuteNonQuery() Catch e As OdbcException ' Handle exception. Finally conn.Close() End Try If rowsAffected > 0 Then Return True Return False End Function
public override bool ChangePassword(string username, string oldPwd, string newPwd) { if (!ValidateUser(username, oldPwd)) { return false; } ValidatePasswordEventArgs args = new ValidatePasswordEventArgs(username, newPwd, true); OnValidatingPassword(args); if (args.Cancel) if (args.FailureInformation != null) throw args.FailureInformation; else throw new MembershipPasswordException("Change password canceled due to new password validation failure."); OdbcConnection conn = new OdbcConnection(ConnectionString); OdbcCommand cmd = new OdbcCommand("UPDATE [" + tableName + "]" + " SET Password = ?, LastPasswordChangedDate = ? " + " WHERE Username = ? AND Password = ? AND ApplicationName = ?", conn); cmd.Parameters.Add("@Password", OdbcType.VarChar, 128).Value = EncodePassword(newPwd); cmd.Parameters.Add("@LastPasswordChangedDate", OdbcType.DateTime).Value = DateTime.Now; cmd.Parameters.Add("@Username", OdbcType.VarChar, 255).Value = username; cmd.Parameters.Add("@OldPassword", OdbcType.VarChar, 128).Value = oldPwd; cmd.Parameters.Add("@ApplicationName", OdbcType.VarChar, 255).Value = ApplicationName; int rowsAffected = 0; try { conn.Open(); rowsAffected = cmd.ExecuteNonQuery(); } catch (OdbcException) { // Handle exception. } finally { conn.Close(); } if (rowsAffected > 0) { return true; } return false; }
プラットフォームWindows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
バージョン情報
参照ValidatePasswordEventArgs プロパティ
パブリック プロパティ| 名前 | 説明 | |
|---|---|---|
| Cancel | 現在のユーザー作成、パスワード変更、またはパスワード リセットの各アクションをキャンセルするかどうかを示す値を取得または設定します。 |
| FailureInformation | パスワード検証エラーの理由を説明する例外を取得または設定します。 |
| IsNewUser | ValidatingPassword イベントが CreateUser メソッドの呼び出し中に発生しているかどうかを示す値を取得します。 |
| Password | 現在のユーザー作成、パスワード変更、またはパスワード リセットの各アクションに対するパスワードを取得します。 |
| UserName | 現在のユーザー作成、パスワード変更、またはパスワード リセットの各アクションに対するメンバシップ ユーザーの名前を取得します。 |
参照ValidatePasswordEventArgs メソッド
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
| GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
| GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
| ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |
プロテクト メソッド| 名前 | 説明 | |
|---|---|---|
| Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
| MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
参照ValidatePasswordEventArgs メンバ
MembershipProvider クラスの ValidatingPassword イベントのイベント データを提供します。
ValidatePasswordEventArgs データ型で公開されるメンバを以下の表に示します。
パブリック コンストラクタ
パブリック プロパティ| 名前 | 説明 | |
|---|---|---|
| Cancel | 現在のユーザー作成、パスワード変更、またはパスワード リセットの各アクションをキャンセルするかどうかを示す値を取得または設定します。 |
| FailureInformation | パスワード検証エラーの理由を説明する例外を取得または設定します。 |
| IsNewUser | ValidatingPassword イベントが CreateUser メソッドの呼び出し中に発生しているかどうかを示す値を取得します。 |
| Password | 現在のユーザー作成、パスワード変更、またはパスワード リセットの各アクションに対するパスワードを取得します。 |
| UserName | 現在のユーザー作成、パスワード変更、またはパスワード リセットの各アクションに対するメンバシップ ユーザーの名前を取得します。 |
パブリック メソッド| 名前 | 説明 | |
|---|---|---|
| Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
| GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
| GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
| ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
| ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |
プロテクト メソッド| 名前 | 説明 | |
|---|---|---|
| Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
| MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
参照- ValidatePasswordEventArgsのページへのリンク