Udostępnij za pośrednictwem


SqlMembershipProvider.ChangePassword(String, String, String) Metoda

Definicja

Modyfikuje hasło użytkownika.

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

Parametry

username
String

Użytkownik, który zaktualizuje hasło.

oldPassword
String

Bieżące hasło dla określonego użytkownika.

newPassword
String

Nowe hasło dla określonego użytkownika.

Zwraca

true jeśli hasło zostało pomyślnie zaktualizowane. false Jeśli podane stare hasło jest nieprawidłowe, użytkownik jest zablokowany lub użytkownik nie istnieje w bazie danych.

Wyjątki

username jest pustym ciągiem (""), zawiera przecinek lub jest dłuższy niż 256 znaków.

-lub-

oldPassword jest pustym ciągiem lub dłuższym niż 128 znaków.

-lub-

newPassword jest pustym ciągiem lub dłuższym niż 128 znaków.

-lub-

Zakodowana wersja pliku newPassword jest większa niż 128 znaków.

-lub-

Akcja zmiany hasła została anulowana przez subskrybenta zdarzenia ValidatingPassword , a FailureInformation właściwość to null.

-lub-

Długość newPassword elementu jest mniejsza niż minimalna długość określona MinRequiredPasswordLength we właściwości .

-lub-

Liczba znaków innych niż alfabetyczne w obiekcie newPassword jest mniejsza niż wymagana liczba znaków innych niż alfabetyczne określone we MinRequiredNonAlphanumericCharacters właściwości .

-lub-

newPassword nie przekazuje wyrażenia regularnego zdefiniowanego PasswordStrengthRegularExpression we właściwości .

username to null.

-lub-

oldPassword to null.

-lub-

newPassword to null.

username nie można odnaleźć w bazie danych.

Wystąpił błąd podczas ustawiania nowej wartości hasła w bazie danych.

Wystąpił nieobsługiwany wyjątek.

Przykłady

Poniższy przykład kodu modyfikuje hasło dla określonego użytkownika.

Uwaga

W tym przykładzie użyto Provider właściwości Membership klasy do wywołania określonego SqlMembershipProvider jako defaultProvider w pliku Web.config. Jeśli musisz uzyskać dostęp do domyślnego dostawcy jako typu SqlMembershipProvider, możesz rzutować Provider właściwość Membership klasy . Aby uzyskać dostęp do innych skonfigurowanych dostawców jako określony typ dostawcy, możesz uzyskać do nich dostęp za pomocą ich skonfigurowanej nazwy z Providers właściwością Membership klasy i rzutować je jako określony typ dostawcy.

<%@ 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>

Uwagi

Ta metoda jest wywoływana przez Membership klasę w celu zaktualizowania hasła użytkownika w bazie danych programu SQL Server określonego w pliku konfiguracji aplikacji ASP.NET (Web.config).

Maksymalna długość hasła to 128 znaków.

Jeśli do metody podano ChangePassword nieprawidłowe hasło, wewnętrzny licznik, który śledzi nieprawidłowe próby hasła, jest zwiększany o jeden. Może to spowodować zablokowanie użytkownika i nie można się zalogować, dopóki stan blokady nie zostanie wyczyszczone przez wywołanie UnlockUser metody . Jeśli podano poprawne hasło i użytkownik nie jest obecnie zablokowany, wewnętrzne liczniki śledzące nieprawidłowe hasło i próby odpowiedzi na hasło są resetowane do zera. Aby uzyskać więcej informacji, zobacz właściwości MaxInvalidPasswordAttempts i PasswordAttemptWindow.

Metodę ChangePassword można wywołać bezpośrednio, uzyskując najpierw odwołanie do SqlMembershipProvider wystąpienia za pomocą Provider właściwości Membership klasy . Właściwość Provider uwidacznia defaultProvider określony w pliku Web.config aplikacji. Skonfigurowani dostawcy, którzy nie są domyślnym dostawcą, do których odwołuje się Providers właściwość .

Hasła użytkowników można również zmienić przy użyciu ChangePassword metody .

Spacje wiodące i końcowe są przycinane ze wszystkich wartości parametrów.

Dotyczy

Zobacz też