共用方式為


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 屬性中指定的所需非字母字元數。

-或-

newPassword 不傳遞 PasswordStrengthRegularExpression 屬性中定義的規則運算式 (Regular Expression)。

usernamenull

-或-

oldPasswordnull

-或-

newPasswordnull

username 無法在資料庫中找到。

在資料庫中設定新的密碼值時發生錯誤。

發生未處理的例外狀況。

範例

下列程式代碼範例會修改指定用戶的密碼。

注意

這個範例會使用 Provider 類別的 Membership 屬性,呼叫 SqlMembershipProvider 在 Web.config 檔案中指定為 defaultProvider 的 。 如果您需要存取預設提供者做為 類型 SqlMembershipProvider,您可以轉換 Provider 類別的 Membership 屬性。 若要以特定提供者類型存取其他已設定的提供者,您可以使用 類別 ProvidersMembership 屬性來存取這些提供者,並將其轉換成特定提供者類型。

<%@ 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 清除鎖定狀態之前登入。 如果提供正確的密碼且使用者目前未鎖定,則追蹤無效密碼和密碼回應嘗試的內部計數器會重設為零。 如需詳細資訊,請參閱 MaxInvalidPasswordAttemptsPasswordAttemptWindow 屬性。

您可以直接呼叫 ChangePassword 方法,方法是先透過 Provider 類別的 屬性取得 實例的Membership參考SqlMembershipProvider。 屬性 ProviderdefaultProvider 公開應用程式 Web.config 檔案中指定的 。 設定的提供者不是使用 Providers 屬性參考的預設提供者。

您也可以使用 ChangePassword 方法來變更用戶密碼。

前置和尾端空格會從所有參數值修剪。

適用於

另請參閱