다음을 통해 공유


SqlMembershipProvider.ChangePassword(String, String, String) 메서드

정의

사용자 암호를 수정합니다.

public:
 override bool ChangePassword(System::String ^ username, System::String ^ oldPassword, System::String ^ newPassword);
public override bool ChangePassword (string username, string oldPassword, string newPassword);
override this.ChangePassword : string * string * string -> bool
Public Overrides Function ChangePassword (username As String, oldPassword As String, newPassword As String) As Boolean

매개 변수

username
String

암호를 업데이트하려는 사용자입니다.

oldPassword
String

지정된 사용자의 현재 암호입니다.

newPassword
String

지정된 사용자의 새 암호입니다.

반환

암호가 성공적으로 업데이트되었으면 true이고, 이전에 제공한 암호가 잘못되었거나 사용자가 잠겨 있거나 데이터베이스에 사용자가 없으면 false입니다.

예외

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

또는

oldPassword이 빈 문자열이거나 128자보다 긴 경우

또는

newPassword이 빈 문자열이거나 128자보다 긴 경우

또는

인코딩된 버전의 newPassword가 128자보다 긴 경우

또는

암호 변경 작업이 ValidatingPassword 이벤트 등록자에 의해 취소되었고 FailureInformation 속성이 null인 경우

또는

newPassword의 길이가 MinRequiredPasswordLength 속성에 지정된 최소 길이보다 작은 경우

또는

newPassword의 영문자가 아닌 문자 수가 MinRequiredNonAlphanumericCharacters 속성에 지정된 필요한 영문자가 아닌 문자 수보다 적은 경우

또는

newPasswordPasswordStrengthRegularExpression 속성에 정의된 정규식을 통과하지 못하는 경우

username이(가) null인 경우

또는

oldPasswordnull입니다.

또는

newPassword이(가) null인 경우

데이터베이스에서 username을 찾을 수 없는 경우

데이터베이스에 새 암호 값을 설정하는 동안 오류가 발생한 경우

처리되지 않은 예외가 발생했습니다.

예제

다음 코드 예제에서는 지정된 사용자의 암호를 수정합니다.

참고

이 예제에서는 클래스의 속성을 사용하여 Provider Web.config 파일에서 지정된 defaultProvider 를 로 호출 SqlMembershipProviderMembership 합니다. 기본 공급자에 형식 SqlMembershipProvider으로 액세스해야 하는 경우 클래스의 속성을 캐스팅할 ProviderMembership 수 있습니다. 특정 공급자 형식으로 구성된 다른 공급자에 액세스하려면 클래스의 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 ChangePassword_OnClick(object sender, EventArgs args)
{
  try
  {
    // Update the password.

    if (Membership.Provider.ChangePassword(User.Identity.Name, OldPasswordTextbox.Text, PasswordTextbox.Text))
    {
      Msg.Text = "Password changed.";
      return;
    }
  }
  catch
  {
  }

  Msg.Text = "Password change failed. Please re-enter your values and try again.";
}


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

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

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

  <table cellpadding="3" border="0">
    <tr>
      <td>Old Password:</td>
      <td><asp:Textbox id="OldPasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
                                      ControlToValidate="OldPasswordTextbox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>Password:</td>
      <td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="PasswordRequiredValidator" runat="server"
                                      ControlToValidate="PasswordTextbox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>Confirm Password:</td>
      <td><asp:Textbox id="PasswordConfirmTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="PasswordConfirmRequiredValidator" runat="server"
                                      ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
                                      Display="Static" 
                                      ErrorMessage="Required" />
          <asp:CompareValidator id="PasswordConfirmCompareValidator" runat="server"
                                      ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
                                      Display="Static" ControlToCompare="PasswordTextBox"
                                      ErrorMessage="Confirm password must match password." />
      </td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="ChangePasswordButton" Text="Change Password" 
                      OnClick="ChangePassword_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 ChangePassword_OnClick(sender As Object, args As EventArgs)
  Try
    ' Update the password.

    If Membership.Provider.ChangePassword(User.Identity.Name, _
                                          OldPasswordTextbox.Text, _
                                          PasswordTextbox.Text) Then 
      Msg.Text = "Password changed."
      Return
    End If
  Catch
  End Try

  Msg.Text = "Password change failed. Please re-enter your values and try again."
End Sub

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

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

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

  <table cellpadding="3" border="0">
    <tr>
      <td>Old Password:</td>
      <td><asp:Textbox id="OldPasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
                                      ControlToValidate="OldPasswordTextbox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>Password:</td>
      <td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="PasswordRequiredValidator" runat="server"
                                      ControlToValidate="PasswordTextbox" ForeColor="red"
                                      Display="Static" ErrorMessage="Required" /></td>
    </tr>
    <tr>
      <td>Confirm Password:</td>
      <td><asp:Textbox id="PasswordConfirmTextbox" runat="server" TextMode="Password" /></td>
      <td><asp:RequiredFieldValidator id="PasswordConfirmRequiredValidator" runat="server"
                                      ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
                                      Display="Static" 
                                      ErrorMessage="Required" />
          <asp:CompareValidator id="PasswordConfirmCompareValidator" runat="server"
                                      ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
                                      Display="Static" ControlToCompare="PasswordTextBox"
                                      ErrorMessage="Confirm password must match password." />
      </td>
    </tr>
    <tr>
      <td></td>
      <td><asp:Button id="ChangePasswordButton" Text="Change Password" 
                      OnClick="ChangePassword_OnClick" runat="server" /></td>
    </tr>
  </table>
</form>

</body>
</html>

설명

이 메서드는 Membership ASP.NET 애플리케이션의 구성 파일 (Web.config)에 지정 된 SQL Server 데이터베이스의 사용자에 대 한 암호를 업데이트 하는 클래스입니다.

최대 암호 길이는 128자입니다.

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

먼저 클래스의 ChangePassword 속성을 통해 인스턴스에 대한 참조 SqlMembershipProvider 를 가져와서 메서드를 Provider 직접 호출할 Membership 수 있습니다. 합니다 Provider 속성을 노출 합니다 defaultProvider 애플리케이션에 대 한 Web.config 파일에 지정 합니다. 속성을 사용하여 Providers 참조되는 기본 공급자가 아닌 구성된 공급자입니다.

메서드를 사용하여 ChangePassword 사용자 암호를 변경할 수도 있습니다.

선행 및 후행 공백은 모든 매개 변수 값에서 잘립니다.

적용 대상

추가 정보