SqlMembershipProvider.ChangePassword(String, String, String) Método

Definição

Modifica a palavra-passe do utilizador.

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

Parâmetros

username
String

O utilizador para atualizar a palavra-passe.

oldPassword
String

A palavra-passe atual do utilizador especificado.

newPassword
String

A nova palavra-passe para o utilizador especificado.

Devoluções

true se a palavra-passe foi atualizada com sucesso. false Se a palavra-passe antiga fornecida for inválida, o utilizador fica bloqueado ou não existe na base de dados.

Exceções

username é uma cadeia vazia (""), contém uma vírgula, ou tem mais de 256 caracteres.

-ou-

oldPassword é uma cadeia vazia ou mais longa que 128 caracteres.

-ou-

newPassword é uma cadeia vazia ou mais longa que 128 caracteres.

-ou-

A versão codificada de newPassword tem mais de 128 caracteres.

-ou-

A ação de alterar palavra-passe foi cancelada por um subscritor do ValidatingPassword evento, e a FailureInformation propriedade foi null.

-ou-

O comprimento de newPassword é inferior ao comprimento mínimo especificado na MinRequiredPasswordLength propriedade.

-ou-

O número de caracteres não alfabéticos em newPassword é inferior ao número exigido de caracteres não alfabéticos especificados na MinRequiredNonAlphanumericCharacters propriedade.

-ou-

newPassword não passa pela expressão regular definida na PasswordStrengthRegularExpression propriedade.

username é null.

-ou-

oldPassword é null.

-ou-

newPassword é null.

username não foi encontrado na base de dados.

Ocorreu um erro ao definir o novo valor da palavra-passe na base de dados.

Ocorreu uma exceção não tratada.

Exemplos

O exemplo de código seguinte modifica a palavra-passe para o utilizador especificado.

Note

Este exemplo usa a Provider propriedade da Membership classe para chamar o SqlMembershipProvider especificado como o defaultProvider no ficheiro Web.config. Se precisares de aceder ao fornecedor padrão como tipo SqlMembershipProvider, podes castar a Provider propriedade da Membership classe. Para aceder a outros fornecedores configurados como um tipo específico de fornecedor, pode aceder a eles pelo nome configurado com a Providers propriedade da Membership classe e atribuí-los ao tipo específico de fornecedor.

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

Observações

Este método é chamado pela classe Membership para atualizar a palavra-passe de um utilizador na base de dados SQL Server especificada no ficheiro de configuração da aplicação ASP.NET (Web.config).

O comprimento máximo da palavra-passe é de 128 caracteres.

Se for fornecida uma palavra-passe incorreta ao ChangePassword método, o contador interno que acompanha as tentativas de palavra-passe inválida é incrementado em um. Isto pode resultar no bloqueio do utilizador e na impossibilidade de iniciar sessão até que o estado do bloqueio seja resolvido por uma chamada ao UnlockUser método. Se for fornecida a palavra-passe correta e o utilizador não estiver atualmente bloqueado, então os contadores internos que rastreiam palavras-passe inválidas e tentativas de resposta por palavra-passe são reiniciados para zero. Para obter mais informações, consulte as propriedades MaxInvalidPasswordAttempts e PasswordAttemptWindow.

Pode chamar o ChangePassword método diretamente obtendo primeiro uma referência à SqlMembershipProvider instância através da Provider propriedade da Membership classe. A Provider propriedade expõe o defaultProvider especificado no Web.config ficheiro da aplicação. Fornecedores configurados que não são o fornecedor padrão referenciado através da Providers propriedade.

Também pode alterar as palavras-passe dos utilizadores usando o ChangePassword método.

Os espaços à frente e à saída são cortados a partir de todos os valores dos parâmetros.

Aplica-se a

Ver também