SqlMembershipProvider.ChangePassword(String, String, String) Metodo

Definizione

Modifica la password di un utente.

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

Parametri

username
String

Utente per il quale aggiornare la password.

oldPassword
String

Password corrente dell'utente specificato.

newPassword
String

Nuova password per l'utente specificato.

Restituisce

true se la password è stata aggiornata correttamente. false se la vecchia password non è valida, se l'utente è bloccato o se l'utente non esiste nel database.

Eccezioni

username è una stringa vuota (""), contiene una virgola o è di lunghezza superiore a 256 caratteri.

-oppure-

oldPassword è una stringa vuota o è di lunghezza superiore a 128 caratteri.

-oppure-

newPassword è una stringa vuota o è di lunghezza superiore a 128 caratteri.

-oppure-

La lunghezza della versione codificata di newPassword è maggiore di 128 caratteri.

-oppure-

L'operazione di cambio password è stata annullata da un sottoscrittore all'evento ValidatingPassword e la proprietà FailureInformation era null.

-oppure-

La lunghezza del parametro newPassword è inferiore alla lunghezza minima specificata nella proprietà MinRequiredPasswordLength.

-oppure-

Il numero di caratteri non alfabetici contenuti nel parametro newPassword è inferiore al numero minimo di caratteri non alfabetici specificato nella proprietà MinRequiredNonAlphanumericCharacters.

-oppure-

Il parametro newPassword non supera i criteri dell'espressione regolare definita nella proprietà PasswordStrengthRegularExpression.

username è null.

-oppure-

oldPassword è null.

-oppure-

newPassword è null.

Impossibile trovare username nel database.

Si è verificato un errore durante l'impostazione della nuova password nel database.

Eccezione non gestita.

Esempio

Nell'esempio di codice seguente viene modificata la password per l'utente specificato.

Nota

In questo esempio viene utilizzata la Provider proprietà della Membership classe per chiamare l'oggetto defaultProviderSqlMembershipProvider specificato come nel file Web.config. Se è necessario accedere al provider predefinito come tipo SqlMembershipProvider, è possibile eseguire il cast della Provider proprietà della Membership classe. Per accedere ad altri provider configurati come tipo di provider specifico, è possibile accedervi tramite il nome configurato con la proprietà della Membership classe e eseguirne il Providers cast come tipo di provider specifico.

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

Commenti

Questo metodo viene chiamato dalla Membership classe per aggiornare la password per un utente nel database SQL Server specificato nel file di configurazione dell'applicazione di ASP.NET (Web.config).

La lunghezza massima della password è di 128 caratteri.

Se viene fornita una password errata al ChangePassword metodo, il contatore interno che tiene traccia dei tentativi di password non validi viene incrementato di uno. Ciò può comportare il blocco dell'utente e non è in grado di accedere fino a quando lo stato del UnlockUser blocco non viene cancellato da una chiamata al metodo. Se la password corretta viene fornita e l'utente non è attualmente bloccato, i contatori interni che tengono traccia dei tentativi di password e risposte password non validi vengono reimpostati su zero. Per altre informazioni, vedere le proprietà MaxInvalidPasswordAttempts e PasswordAttemptWindow.

È possibile chiamare il ChangePassword metodo direttamente ottenendo un riferimento all'istanza SqlMembershipProvider tramite la Provider proprietà della Membership classe. La Provider proprietà espone l'oggetto defaultProvider specificato nel file di Web.config per l'applicazione. Provider configurati che non sono il provider predefinito a cui fa riferimento usando la Providers proprietà .

È anche possibile modificare le password utente usando il ChangePassword metodo .

Gli spazi iniziali e finali vengono tagliati da tutti i valori dei parametri.

Si applica a

Vedi anche