SqlMembershipProvider.ChangePassword(String, String, String) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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 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.