다음을 통해 공유


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이고, 실패했으면 false입니다. password이 올바르지 않거나 사용자가 잠겨 있거나 데이터베이스에 사용자가 없어도 false 값이 반환됩니다.

예외

username이 빈 문자열("")이거나 쉼표를 포함하거나 256자보다 긴 경우

또는 password가 빈 문자열이거나 128자보다 긴 경우

또는 newPasswordQuestion가 빈 문자열이거나 256자보다 긴 경우

또는 newPasswordAnswer가 빈 문자열이거나 128자보다 긴 경우

또는 인코딩된 버전의 newPasswordAnswer가 128자보다 긴 경우

username이(가) null인 경우

또는 password이(가) null인 경우

또는 newPasswordQuestionnull이고 RequiresQuestionAndAnswertrue인 경우

또는 newPasswordAnswernull이고 RequiresQuestionAndAnswertrue인 경우

데이터베이스에서 암호 질문과 대답을 변경할 때 오류가 발생한 경우

예제

다음 코드 예제에서는 사용자에 대한 암호 질문과 대답을 업데이트합니다.

참고

이 예제에서는 클래스의 Provider Membership 속성을 사용하여 Web.config 파일에서 지정된 defaultProvider 속성을 호출 SqlMembershipProvider 합니다. 기본 공급자에 형식 SqlMembershipProvider으로 액세스해야 하는 경우 클래스의 속성을 캐스팅할 Provider Membership 수 있습니다. 특정 공급자 유형으로 구성된 다른 공급자에 액세스하려면 클래스의 Membership 속성을 사용하여 구성된 이름으로 Providers 액세스하고 특정 공급자 유형으로 캐스팅할 수 있습니다.

<%@ 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 제공되면 잘못된 암호 시도를 추적하는 내부 카운터가 하나씩 증가합니다. 이로 인해 사용자가 잠기고 메서드를 호출 UnlockUser 하여 잠금 상태가 지워질 때까지 로그온할 수 없습니다. 올바른 암호가 제공되고 사용자가 현재 잠겨 있지 않으면 잘못된 암호 및 암호 응답 시도를 추적하는 내부 카운터가 0으로 다시 설정됩니다. 자세한 내용은 MaxInvalidPasswordAttemptsPasswordAttemptWindow 속성을 참조하세요.

암호 질문의 최대 길이는 256자입니다. 암호 답변의 최대 길이는 128자입니다.

자세한 내용은 RequiresQuestionAndAnswer, ResetPasswordGetPassword을 참조하십시오.

선행 및 후행 공백은 모든 매개 변수 값에서 트리밍됩니다.

적용 대상

추가 정보