SqlMembershipProvider.ChangePassword(String, String, String) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Modifica a senha de um usuário.
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 usuário para o qual atualizar a senha.
- oldPassword
- String
A senha atual do usuário especificado.
- newPassword
- String
A nova senha do usuário especificado.
Retornos
true
se a senha foi atualizada com êxito.
false
se a senha antiga fornecida for inválida, o usuário estiver bloqueado ou o usuário não existir no banco de dados.
Exceções
username
é uma cadeia de caracteres vazia (""), contém uma vírgula ou tem mais de 256 caracteres.
- ou -
oldPassword
é uma cadeia de caracteres vazia ou com mais de 128 caracteres.
- ou -
newPassword
é uma cadeia de caracteres vazia ou com mais de 128 caracteres.
- ou -
A versão codificada de newPassword
é maior que 128 caracteres.
- ou -
A ação de alteração de senha foi cancelada por um assinante para o evento ValidatingPassword e a propriedade FailureInformation era null
.
- ou -
O tamanho de newPassword
é menor que o tamanho mínimo especificado na propriedade MinRequiredPasswordLength.
- ou -
O número de caracteres não alfabéticos em newPassword
é menor que o número necessário de caracteres não alfabéticos especificado na propriedade MinRequiredNonAlphanumericCharacters.
- ou -
newPassword
não passa a expressão regular definida na propriedade PasswordStrengthRegularExpression.
username
não foi encontrado no banco de dados.
Ocorreu um erro ao definir o novo valor de senha no banco de dados.
Ocorreu uma exceção sem tratamento.
Exemplos
O exemplo de código a seguir modifica a senha do usuário especificado.
Observação
Este exemplo usa a Provider propriedade da Membership classe para chamar o SqlMembershipProvider especificado como o defaultProvider
no arquivo Web.config. Se você precisar acessar o provedor padrão como o tipo SqlMembershipProvider, poderá converter a Provider propriedade da Membership classe . Para acessar outros provedores configurados como um tipo de provedor específico, você pode acessá-los pelo nome configurado com a Providers propriedade da Membership classe e convertê-los como o tipo de provedor específico.
<%@ 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>
Comentários
Esse método é chamado pela Membership classe para atualizar a senha de um usuário no banco de dados do SQL Server especificado no arquivo de configuração do aplicativo ASP.NET (Web.config).
O comprimento máximo da senha é de 128 caracteres.
Se uma senha incorreta for fornecida ao ChangePassword método , o contador interno que rastreia tentativas de senha inválidas será incrementado por um. Isso pode fazer com que o usuário seja bloqueado e não consiga fazer logon até que o status do bloqueio seja limpo por uma chamada para o UnlockUser método . Se a senha correta for fornecida e o usuário não estiver bloqueado no momento, os contadores internos que acompanham as tentativas inválidas de senha e resposta de senha serão redefinidos para zero. Para obter mais informações, confira as propriedades MaxInvalidPasswordAttempts e PasswordAttemptWindow.
Você pode chamar o ChangePassword método diretamente obtendo primeiro uma referência à SqlMembershipProvider instância por meio da Provider propriedade da Membership classe . A Provider propriedade expõe o defaultProvider
especificado no arquivo Web.config para o aplicativo. Provedores configurados que não são o provedor padrão referenciado usando a Providers propriedade .
Você também pode alterar as senhas do usuário usando o ChangePassword método .
Os espaços à esquerda e à direita são cortados de todos os valores de parâmetro.