次の方法で共有


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

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

戻り値

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

例外

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

- または -

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

- または -

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

- または -

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

- または -

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

usernamenullです。

または

passwordnull です。

- または -

newPasswordQuestionnull で、RequiresQuestionAndAnswertrue です。

- または -

newPasswordAnswernull で、RequiresQuestionAndAnswertrue です。

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

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

注意

この例では、 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>

注釈

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

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

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

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

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

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

適用対象

こちらもご覧ください