SqlMembershipProvider.ResetPassword メソッド
アセンブリ: System.Web (system.web.dll 内)

Public Overrides Function ResetPassword ( _ username As String, _ passwordAnswer As String _ ) As String
Dim instance As SqlMembershipProvider Dim username As String Dim passwordAnswer As String Dim returnValue As String returnValue = instance.ResetPassword(username, passwordAnswer)
戻り値
指定したユーザーの新しいパスワード。

例外の種類 | 条件 |
---|---|
System.Web.Security.MembershipPasswordException | passwordAnswer が無効です。 または ユーザー アカウントが現在ロックされています。 |
System.NotSupportedException | |
System.Configuration.Provider.ProviderException | username がメンバシップ データベース内に見つかりません。 または パスワード変更アクションが ValidatingPassword イベントのサブスクライバによってキャンセルされ、かつ FailureInformation プロパティが null 参照 (Visual Basic では Nothing) です。 または |
System.ArgumentException | username が空の文字列 ("") であるか、コンマを含んでいるか、または 256 文字を超えています。 または passwordAnswer が空の文字列であるか 128 文字を超えていて、かつ RequiresQuestionAndAnswer が true です。 または |
System.ArgumentNullException | username が null 参照 (Visual Basic では Nothing) です。 または passwordAnswer が null 参照 (Visual Basic では Nothing) で RequiresQuestionAndAnswer が true です。 |

このメソッドは Membership クラスによって呼び出され、ASP.NET アプリケーションの構成ファイル (Web.config) に指定されている SQL Server データベース内のユーザーのパスワードを、ランダムに生成された新しい値にリセットします。新しいパスワードが返されます。
![]() |
---|
ResetPassword メソッドにより生成されたランダム パスワードは、PasswordStrengthRegularExpression プロパティの正規表現に合格するとは限りません。ただし、ランダム パスワードは、MinRequiredPasswordLength プロパティおよび MinRequiredNonAlphanumericCharacters プロパティで設定された基準は満たしています。 |
ResetPassword メソッドは、一般に PasswordFormat プロパティが Hashed の場合に使用されます。ハッシュされるパスワードをユーザーが忘れた場合、ユーザーはパスワードを取得できません。ただし、ユーザーが正しいパスワードの解答を入力した場合、プロバイダ側で、自動的に生成された新しいパスワードにパスワードをリセットできます。
正しくないパスワードの解答が ResetPassword メソッドに対して入力されると、無効なパスワードの指定回数を追跡する内部カウンタが 1 つインクリメントされます。これにより、ユーザーをロックし、UnlockUser メソッドが呼び出されてロック ステータスが解除されるまでそのユーザーのログオンを禁止できます。ユーザーがロックされていない状態で、正しいパスワードの解答が指定されると、無効なパスワード解答の指定回数を追跡する内部カウンタはゼロにリセットされます。詳細については、MaxInvalidPasswordAttempts プロパティのトピックと PasswordAttemptWindow プロパティのトピックを参照してください。
ResetPassword メソッドは、最初に Membership クラスの Provider プロパティから SqlMembershipProvider インスタンスの参照を取得することにより、直接呼び出すことができます。生成されるパスワードは 14 文字以上または MinRequiredPasswordLength プロパティで指定されている長さ以上になり、MinRequiredNonAlphanumericCharacters プロパティで指定されている数の英数字以外の文字を含みます。PasswordStrengthRegularExpression プロパティが指定されている場合、このパスワードがその正規表現に合格するかどうかについては保証されません。

ユーザーのパスワードをリセットし、自動的に生成される新しいパスワードを返すコード例を次に示します。
![]() |
---|
このコード例では、Membership クラスを使用して、Web.config ファイル内の defaultProvider として指定されている SqlMembershipProvider を呼び出します。既定のプロバイダに SqlMembershipProvider 型としてアクセスする必要がある場合は、Membership クラスの Provider プロパティをキャストできます。固有のプロバイダの種類として構成されたその他のプロバイダにアクセスする場合、Membership クラスの Providers プロパティを使用して、参照されたプロバイダを固有プロバイダの種類としてキャストすることによって、構成された名前でアクセスできます。 |
<%@ Page Language="VB" %> <%@ Import Namespace="System.Web.Security" %> <script runat="server"> Public Sub Page_Load(sender As Object, args As EventArgs) If Not Membership.EnablePasswordReset Then FormsAuthentication.RedirectToLoginPage() End If Msg.Text = "" If Not IsPostBack Then Msg.Text = "Please enter a user name." Else VerifyUsername() End If End Sub Public Sub VerifyUsername() Dim user As MembershipUser = Membership.GetUser(UsernameTextBox.Text, False) If user Is Nothing Then Msg.Text = "The user name " & Server.HtmlEncode(UsernameTextBox.Text) & " was not found. Please check the value and reenter your user name." QuestionLabel.Text = "" QuestionLabel.Enabled = False AnswerTextBox.Enabled = False ResetPasswordButton.Enabled = False Else QuestionLabel.Text = user.PasswordQuestion QuestionLabel.Enabled = True AnswerTextBox.Enabled = True ResetPasswordButton.Enabled = True End If End Sub Public Sub ResetPassword_OnClick(sender As Object, args As EventArgs) Dim newPassword As String = "" Try newPassword = Membership.Provider.ResetPassword(UsernameTextBox.Text, AnswerTextBox.Text) Catch e As NotSupportedException Msg.Text = "An error has occurred resetting your password: " & e.Message & "." & _ "Please check your values and try again." Catch e As MembershipPasswordException Msg.Text = "Invalid password answer. Please reenter the answer and try again." Return Catch e As System.Configuration.Provider.ProviderException Msg.Text = "The specified user name does not exist. Please check your value and try again." End Try If newPassword <> "" Then Msg.Text = "Password reset. Your new password is: " & Server.HtmlEncode(newPassword) Else Msg.Text = "Password reset failed. Please reenter your values and try again." End If End Sub </script> <html> <head> <title>Sample: Reset Password</title> </head> <body> <form runat="server"> <h3>Reset Password</h3> <asp:Label id="Msg" runat="server" ForeColor="maroon" /><BR> Username: <asp:Textbox id="UsernameTextBox" Columns="30" runat="server" AutoPostBack="True" /> <asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server" ControlToValidate="UsernameTextBox" ForeColor="red" Display="Static" ErrorMessage="Required" /><BR> Password Question: <B><asp:Label id="QuestionLabel" runat="server" /></B><BR> Answer: <asp:TextBox id="AnswerTextBox" Columns="60" runat="server" Enabled="False" /> <asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server" ControlToValidate="AnswerTextBox" ForeColor="red" Display="Static" ErrorMessage="Required" Enabled="False" /><BR> <asp:Button id="ResetPasswordButton" Text="Reset Password" OnClick="ResetPassword_OnClick" runat="server" Enabled="False" /> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Security" %> <script runat="server"> public void Page_Load(object sender, EventArgs args) { if (!Membership.EnablePasswordReset) { FormsAuthentication.RedirectToLoginPage(); } Msg.Text = ""; if (!IsPostBack) { Msg.Text = "Please enter a user name."; } else { VerifyUsername(); } } public void VerifyUsername() { MembershipUser user = Membership.GetUser(UsernameTextBox.Text, false); if (user == null) { Msg.Text = "The user name " + Server.HtmlEncode(UsernameTextBox.Text) + " was not found. Please check the value and reenter your user name."; QuestionLabel.Text = ""; QuestionLabel.Enabled = false; AnswerTextBox.Enabled = false; ResetPasswordButton.Enabled = false; } else { QuestionLabel.Text = user.PasswordQuestion; QuestionLabel.Enabled = true; AnswerTextBox.Enabled = true; ResetPasswordButton.Enabled = true; } } public void ResetPassword_OnClick(object sender, EventArgs args) { string newPassword = ""; try { newPassword = Membership.Provider.ResetPassword(UsernameTextBox.Text, AnswerTextBox.Text); } catch (NotSupportedException e) { Msg.Text = "An error has occurred resetting your password: " + e.Message + "." + "Please check your values and try again."; } catch (MembershipPasswordException e) { Msg.Text = "Invalid password answer. Please reenter the answer and try again."; return; } catch (System.Configuration.Provider.ProviderException e) { Msg.Text = "The specified user name does not exist. Please check your value and try again."; } if (newPassword != "") { Msg.Text = "Password reset. Your new password is: " + Server.HtmlEncode(newPassword); } else { Msg.Text = "Password reset failed. Please reenter your values and try again."; } } </script> <html> <head> <title>Sample: Reset Password</title> </head> <body> <form runat="server"> <h3>Reset Password</h3> <asp:Label id="Msg" runat="server" ForeColor="maroon" /><BR> Username: <asp:Textbox id="UsernameTextBox" Columns="30" runat="server" AutoPostBack="true" /> <asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server" ControlToValidate="UsernameTextBox" ForeColor="red" Display="Static" ErrorMessage="Required" /><BR> Password Question: <B><asp:Label id="QuestionLabel" runat="server" /></B><BR> Answer: <asp:TextBox id="AnswerTextBox" Columns="60" runat="server" Enabled="false" /> <asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server" ControlToValidate="AnswerTextBox" ForeColor="red" Display="Static" ErrorMessage="Required" Enabled="false" /><BR> <asp:Button id="ResetPasswordButton" Text="Reset Password" OnClick="ResetPassword_OnClick" runat="server" Enabled="false" /> </form> </body> </html>

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からSqlMembershipProvider.ResetPassword メソッドを検索する場合は、下記のリンクをクリックしてください。

- SqlMembershipProvider.ResetPassword メソッドのページへのリンク