Поделиться через


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.

username имеет значение null.

-или-

oldPassword имеет значение null.

-или-

newPassword имеет значение null.

Параметр username не был найден в базе данных.

Ошибка возникает при размещении нового пароля в базе данных.

Произошло необработанное исключение.

Примеры

В следующем примере кода изменяется пароль для указанного пользователя.

Примечание

В этом примере свойство класса используется Provider для Membership вызова указанного SqlMembershipProvider объекта в качестве defaultProvider в файле Web.config. Если необходимо получить доступ к поставщику по умолчанию в качестве типа SqlMembershipProvider, можно привести Provider свойство Membership класса . Чтобы получить доступ к другим настроенным поставщикам в качестве определенного типа поставщика, вы можете получить к ним доступ по их заданному имени со 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 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 для обновления пароля пользователя в базе данных SQL Server, указанной в файле конфигурации приложения ASP.NET (Web.config).

Максимальная длина пароля — 128 символов.

Если методу предоставлен неверный пароль, внутренний счетчик, отслеживающий попытки ввода недопустимых паролей, увеличивается на единицу ChangePassword . Это может привести к тому, что пользователь будет заблокирован и не сможет войти в систему, пока состояние блокировки не будет очищено вызовом UnlockUser метода . Если указан правильный пароль, а пользователь в настоящее время не заблокирован, внутренние счетчики, отслеживающие недопустимый пароль и попытки ответов паролем, сбрасываются до нуля. Дополнительные сведения см. в описаниях свойств MaxInvalidPasswordAttempts и PasswordAttemptWindow.

Метод можно вызвать ChangePassword напрямую, сначала получив ссылку на SqlMembershipProvider экземпляр с помощью Provider свойства Membership класса . Свойство Provider предоставляет объект , указанный defaultProvider в файле Web.config для приложения. Настроенные поставщики, которые не являются поставщиком по умолчанию, на который ссылается свойство Providers .

Вы также можете изменить пароли пользователей с помощью ChangePassword метода .

Начальные и конечные пробелы обрезаются из всех значений параметров.

Применяется к

См. также раздел