Share via


SqlMembershipProvider.ChangePassword(String, String, String) Metoda

Definice

Upraví heslo uživatele.

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živatel, pro který se má heslo aktualizovat.

oldPassword
String

Aktuální heslo pro zadaného uživatele.

newPassword
String

Nové heslo pro zadaného uživatele.

Návraty

true pokud se heslo úspěšně aktualizovalo. false Pokud je zadané staré heslo neplatné, uživatel je uzamčen nebo uživatel v databázi neexistuje.

Výjimky

username je prázdný řetězec (""), obsahuje čárku nebo je delší než 256 znaků.

-nebo-

oldPassword je prázdný řetězec nebo delší než 128 znaků.

-nebo-

newPassword je prázdný řetězec nebo delší než 128 znaků.

-nebo-

Kódovaná verze je newPassword větší než 128 znaků.

-nebo-

Akce změny hesla byla zrušena odběratelem ValidatingPassword události a FailureInformation vlastnost byla null.

-nebo-

Délka parametru newPassword je menší než minimální délka zadaná ve MinRequiredPasswordLength vlastnosti .

-nebo-

Počet nea abecedních znaků v newPassword souboru je menší než požadovaný počet znaků, které nejsou abecední, zadané ve MinRequiredNonAlphanumericCharacters vlastnosti .

-nebo-

newPassword nepředá regulární výraz definovaný ve PasswordStrengthRegularExpression vlastnosti .

username je null.

-nebo-

oldPassword je null.

-nebo-

newPassword je null.

username nebyla v databázi nalezena.

Při nastavování nové hodnoty hesla v databázi došlo k chybě.

Došlo k neošetřené výjimce.

Příklady

Následující příklad kódu upraví heslo pro zadaného uživatele.

Poznámka

Tento příklad používá Provider vlastnost Membership třídy k volání SqlMembershipProvider zadaného jako v defaultProvider souboru Web.config. Pokud potřebujete získat přístup k výchozímu poskytovateli jako typ SqlMembershipProvider, můžete přetypovat Provider vlastnost Membership třídy . Pokud chcete získat přístup k jiným nakonfigurovaným poskytovatelům jako konkrétnímu typu zprostředkovatele, můžete k nim přistupovat pomocí jejich nakonfigurovaného názvu s Providers vlastností Membership třídy a přetypovat je jako konkrétní typ zprostředkovatele.

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

Poznámky

Tato metoda je volána Membership třídou k aktualizaci hesla pro uživatele v databázi SQL Server zadané v konfiguračním souboru aplikace ASP.NET (Web.config).

Maximální délka hesla je 128 znaků.

Pokud je metodě zadáno ChangePassword nesprávné heslo, interní čítač, který sleduje neplatné pokusy o heslo, se navýší o jeden. To může vést k tomu, že uživatel bude uzamčen a nebude se moct přihlásit, dokud se stav zámku nevymaže voláním UnlockUser metody . Pokud je zadáno správné heslo a uživatel není aktuálně uzamčen, pak se interní čítače, které sledují neplatné heslo a pokusy o odpověď na heslo, resetují na nulu. Pokud chcete získat další informace, podívejte se na vlastnosti MaxInvalidPasswordAttempts a PasswordAttemptWindow.

Můžete volat metodu ChangePassword přímo tak, že nejprve získáte odkaz na SqlMembershipProvider instanci prostřednictvím Provider vlastnosti Membership třídy . Vlastnost Provider zveřejňuje defaultProvider zadaný v souboru Web.config pro aplikaci. Nakonfigurovaní zprostředkovatelé, kteří nejsou výchozími poskytovateli odkazovanými Providers pomocí vlastnosti .

Hesla uživatelů můžete také změnit pomocí ChangePassword metody .

Ze všech hodnot parametrů se oříznou počáteční a koncové mezery.

Platí pro

Viz také