SqlMembershipProvider.ChangePasswordQuestionAndAnswer メソッド

定義

SQL Server メンバーシップ データベースでユーザーのパスワードの質問と解答を更新します。

public:
 override bool ChangePasswordQuestionAndAnswer(System::String ^ username, System::String ^ password, System::String ^ newPasswordQuestion, System::String ^ newPasswordAnswer);
public override bool ChangePasswordQuestionAndAnswer (string username, string password, string newPasswordQuestion, string newPasswordAnswer);
override this.ChangePasswordQuestionAndAnswer : string * string * string * string -> bool
Public Overrides Function ChangePasswordQuestionAndAnswer (username As String, password As String, newPasswordQuestion As String, newPasswordAnswer As String) As Boolean

パラメーター

username
String

パスワードの質問と回答を変更するユーザー。

password
String

指定したユーザーのパスワード。

newPasswordQuestion
String

指定したユーザーの新しいパスワードの質問。

newPasswordAnswer
String

指定したユーザーの新しいパスワードの回答。

戻り値

Boolean

更新が正常に実行された場合は true、それ以外の場合は falsepassword が無効であったり、ユーザーがロックされていたり、ユーザーがデータベースに存在していない場合にも false が返されます。

例外

username が空の文字列 ("") であるか、コンマを含んでいるか、または 256 文字を超えています。

  • または - password が空の文字列であるか、または 128 文字を超えています。

  • または - newPasswordQuestion が空の文字列であるか、または 256 文字を超えています。

  • または - newPasswordAnswer が空の文字列であるか、または 128 文字を超えています。

  • または - エンコードされた newPasswordAnswer の長さが 128 文字を超えています。

usernamenullです。

または passwordnullです。

データベースでパスワードの質問と解答を変更しているときにエラーが発生しました。

次のコード例では、ユーザーのパスワードの質問と回答を更新します。

注意

この例では、 Provider クラスのプロパティを Membership 使用して、 SqlMembershipProvider Web.config ファイル内で指定されたメソッドを defaultProvider 呼び出します。 型SqlMembershipProviderとして既定のプロバイダーにアクセスする必要がある場合は、クラスのプロパティをProviderMembershipキャストできます。 特定のプロバイダーの種類として他の構成済みプロバイダーにアクセスするには、クラスのプロパティを使用 Providers して構成された名前でアクセスし、特定のプロバイダーの Membership 種類としてキャストできます。

<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

public void ChangePasswordQuestion_OnClick(object sender, EventArgs args)
{
  try
  {
    if (Membership.Provider.ChangePasswordQuestionAndAnswer(User.Identity.Name,
                                                            PasswordTextbox.Text, 
                                                            QuestionTextbox.Text, 
                                                            AnswerTextbox.Text))
      Msg.Text = "Password question and answer changed.";
    else
      Msg.Text = "Change failed. Please reenter your values and try again.";
  }
  catch (System.Configuration.Provider.ProviderException e)
  {
    Msg.Text = "Change failed. Please reenter your values and try again.";
  }
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Change Password Question and Answer</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Change Password Question and Answer for <%=User.Identity.Name%></h3>

  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />

  <table cellpadding="3" border="0">
    <tr>
      <td>Password:</td>
      <td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
                                    ControlToValidate="PasswordTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>New Password Question:</td>
      <td><asp:Textbox id="QuestionTextbox" MaxLength="256" Columns="60" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="QuestionRequiredValidator" runat="server"
                                    ControlToValidate="QuestionTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>New Password Answer:</td>
      <td><asp:Textbox id="AnswerTextbox" MaxLength="128" Columns="60" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
                                    ControlToValidate="AnswerTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="ChangePasswordQuestionButton" 
                      Text="Change Password Question and Answer" 
                      OnClick="ChangePasswordQuestion_OnClick" 
                      runat="server" /></td>
    </tr>
  </table>
</form>

</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

Public Sub ChangePasswordQuestion_OnClick(sender As Object, args As EventArgs)

  Try
    If Membership.Provider.ChangePasswordQuestionAndAnswer(User.Identity.Name, _
                                                          PasswordTextbox.Text, _ 
                                                          QuestionTextbox.Text, _
                                                          AnswerTextbox.Text) Then
      Msg.Text = "Password question and answer changed."
    Else
      Msg.Text = "Change failed. Please reenter your values and try again."
    End If
  Catch e As System.Configuration.Provider.ProviderException
    Msg.Text = "Change failed. Please reenter your values and try again."
  End Try

End Sub

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Change Password Question and Answer</title>
</head>
<body>

<form id="form1" runat="server">
  <h3>Change Password Question and Answer for <%=User.Identity.Name%></h3>

  <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />

  <table cellpadding="3" border="0">
    <tr>
      <td>Password:</td>
      <td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
                                    ControlToValidate="PasswordTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>New Password Question:</td>
      <td><asp:Textbox id="QuestionTextbox" MaxLength="256" Columns="60" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="QuestionRequiredValidator" runat="server"
                                    ControlToValidate="QuestionTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>New Password Answer:</td>
      <td><asp:Textbox id="AnswerTextbox" MaxLength="128" Columns="60" runat="server" /></td>
      <td><asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
                                    ControlToValidate="AnswerTextbox" ForeColor="red"
                                    Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="ChangePasswordQuestionButton" 
                      Text="Change Password Question and Answer" 
                      OnClick="ChangePasswordQuestion_OnClick" 
                      runat="server" /></td>
    </tr>
  </table>
</form>

</body>
</html>

注釈

このメソッドは、ASP.NET アプリケーションの構成ファイル (Web.config) で指定されているSQL Server データベース内のユーザーのパスワードの質問と回答を更新するために、クラスによってMembershipUser呼び出されます。 パスワードの回答は、プロパティで PasswordFormat 指定された形式を使用して暗号化されます。

パスワードの質問と回答を要求すると、ユーザーのパスワードを取得またはリセットするときのセキュリティ層が強化されます。 ユーザー名を作成するときに、ユーザーは、後で忘れたパスワードを取得またはリセットするために使用できる質問と回答を指定できます。 このメソッドは ChangePasswordQuestionAndAnswer 、メンバーシップ ユーザーのパスワードの質問と回答を更新します。

不正なパスワードがメソッドに ChangePasswordQuestionAndAnswer 指定された場合、無効なパスワード試行を追跡する内部カウンターは 1 ずつインクリメントされます。 これにより、ユーザーがロックアウトされ、メソッドを呼び出 UnlockUser してロック状態がクリアされるまでログオンできなくなる可能性があります。 正しいパスワードが指定され、ユーザーが現在ロックアウトされていない場合、無効なパスワードとパスワード応答の試行を追跡する内部カウンターは 0 にリセットされます。 詳細については、MaxInvalidPasswordAttempts プロパティおよび PasswordAttemptWindow プロパティを参照してください。

パスワードの質問の最大長は 256 文字です。 パスワード回答の最大長は 128 文字です。

詳細については、「RequiresQuestionAndAnswerResetPasswordおよび「GetPassword」を参照してください。

先頭と末尾のスペースは、すべてのパラメーター値からトリミングされます。

適用対象

こちらもご覧ください