通过


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

指定用户的新密码。

返回

如果密码已成功更新,则为 false 如果提供的旧密码无效,则用户被锁定,或者数据库中不存在用户。

例外

username 为空字符串(“”),包含逗号或长度超过 256 个字符。

-或-

oldPassword 是空字符串或长度超过 128 个字符。

-或-

newPassword 是空字符串或长度超过 128 个字符。

-或-

编码版本的 newPassword 字符数大于 128 个字符。

-或-

更改密码操作已由事件订阅者 ValidatingPassword 取消,并且 FailureInformation 属性为 null

-或-

newPassword长度小于属性中指定的MinRequiredPasswordLength最小长度。

-或-

newPassword 非字母字符的数目小于属性中指定的 MinRequiredNonAlphanumericCharacters 非字母字符数。

-或-

newPassword 不传递属性 PasswordStrengthRegularExpression 中定义的正则表达式。

usernamenull

-或-

oldPasswordnull

-或-

newPasswordnull

username 在数据库中找不到。

在数据库中设置新密码值时出错。

发生未经处理的异常。

示例

下面的代码示例修改指定用户的密码。

注释

此示例使用 Provider 类的属性 Membership 调用 SqlMembershipProvider 指定为 defaultProvider Web.config 文件中的指定属性。 如果需要以类型 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属性。

可以通过先通过Provider类的属性获取对SqlMembershipProvider实例的Membership引用,直接调用ChangePassword该方法。 该 Provider 属性公开 defaultProvider 应用程序 Web.config 文件中指定的属性。 配置的提供程序不是使用 Providers 属性引用的默认提供程序。

还可以使用 ChangePassword 此方法更改用户密码。

从所有参数值中剪裁前导空格和尾随空格。

适用于

另请参阅