SqlMembershipProvider.ChangePasswordQuestionAndAnswer 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.
Atualiza a pergunta e a resposta de senha para um usuário no banco de dados de associação do SQL Server.
public:
override bool ChangePasswordQuestionAndAnswer(System::String ^ username, System::String ^ password, System::String ^ newPasswordQuestion, System::String ^ newPasswordAnswer);
public override bool ChangePasswordQuestionAndAnswer(string username, string password, string newPasswordQuestion, string newPasswordAnswer);
override this.ChangePasswordQuestionAndAnswer : string * string * string * string -> bool
Public Overrides Function ChangePasswordQuestionAndAnswer (username As String, password As String, newPasswordQuestion As String, newPasswordAnswer As String) As Boolean
Parâmetros
- username
- String
O usuário para o qual alterar a pergunta e a resposta da senha.
- password
- String
A senha do usuário especificado.
- newPasswordQuestion
- String
A nova pergunta de senha para o usuário especificado.
- newPasswordAnswer
- String
A nova resposta de senha para o usuário especificado.
Retornos
true se a atualização tiver sido bem-sucedida; caso contrário, false. Um valor também false será retornado se o password estiver incorreto, 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 -
password é uma cadeia de caracteres vazia ou tem mais de 128 caracteres.
- ou -
newPasswordQuestion é uma cadeia de caracteres vazia ou tem mais de 256 caracteres.
- ou -
newPasswordAnswer é uma cadeia de caracteres vazia ou tem mais de 128 caracteres.
- ou -
A versão codificada tem mais de newPasswordAnswer 128 caracteres.
username é null.
- ou -
password é null.
- ou -
newPasswordQuestion é null e RequiresQuestionAndAnswer é true.
- ou -
newPasswordAnswer é null e RequiresQuestionAndAnswer é true.
Ocorreu um erro ao alterar a pergunta e a resposta da senha no banco de dados.
Exemplos
O exemplo de código a seguir atualiza a pergunta e a resposta de senha para um usuário.
Observação
Este exemplo usa a Provider propriedade da Membership classe para chamar o SqlMembershipProvider especificado como o defaultProvider 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 ChangePasswordQuestion_OnClick(object sender, EventArgs args)
{
try
{
if (Membership.Provider.ChangePasswordQuestionAndAnswer(User.Identity.Name,
PasswordTextbox.Text,
QuestionTextbox.Text,
AnswerTextbox.Text))
Msg.Text = "Password question and answer changed.";
else
Msg.Text = "Change failed. Please reenter your values and try again.";
}
catch (System.Configuration.Provider.ProviderException e)
{
Msg.Text = "Change failed. Please reenter your values and try again.";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Change Password Question and Answer</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Change Password Question and Answer for <%=User.Identity.Name%></h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table cellpadding="3" border="0">
<tr>
<td>Password:</td>
<td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
ControlToValidate="PasswordTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Question:</td>
<td><asp:Textbox id="QuestionTextbox" MaxLength="256" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="QuestionRequiredValidator" runat="server"
ControlToValidate="QuestionTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Answer:</td>
<td><asp:Textbox id="AnswerTextbox" MaxLength="128" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
ControlToValidate="AnswerTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td></td>
<td><asp:Button id="ChangePasswordQuestionButton"
Text="Change Password Question and Answer"
OnClick="ChangePasswordQuestion_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 ChangePasswordQuestion_OnClick(sender As Object, args As EventArgs)
Try
If Membership.Provider.ChangePasswordQuestionAndAnswer(User.Identity.Name, _
PasswordTextbox.Text, _
QuestionTextbox.Text, _
AnswerTextbox.Text) Then
Msg.Text = "Password question and answer changed."
Else
Msg.Text = "Change failed. Please reenter your values and try again."
End If
Catch e As System.Configuration.Provider.ProviderException
Msg.Text = "Change failed. Please reenter your values and try again."
End Try
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Change Password Question and Answer</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Change Password Question and Answer for <%=User.Identity.Name%></h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
<table cellpadding="3" border="0">
<tr>
<td>Password:</td>
<td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
ControlToValidate="PasswordTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Question:</td>
<td><asp:Textbox id="QuestionTextbox" MaxLength="256" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="QuestionRequiredValidator" runat="server"
ControlToValidate="QuestionTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>New Password Answer:</td>
<td><asp:Textbox id="AnswerTextbox" MaxLength="128" Columns="60" runat="server" /></td>
<td><asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
ControlToValidate="AnswerTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td></td>
<td><asp:Button id="ChangePasswordQuestionButton"
Text="Change Password Question and Answer"
OnClick="ChangePasswordQuestion_OnClick"
runat="server" /></td>
</tr>
</table>
</form>
</body>
</html>
Comentários
Esse método é chamado pela MembershipUser classe para atualizar a pergunta de senha e responder a um usuário no banco de dados do SQL Server especificado no arquivo de configuração do aplicativo ASP.NET (Web.config). A resposta de senha é criptografada usando o formato especificado na PasswordFormat propriedade.
Exigir uma pergunta e resposta de senha fornece uma camada adicional de segurança ao recuperar ou redefinir a senha de um usuário. Ao criar um nome de usuário, um usuário pode fornecer uma pergunta e uma resposta que podem ser usadas posteriormente para recuperar ou redefinir uma senha esquecida. O ChangePasswordQuestionAndAnswer método atualiza a pergunta de senha e a resposta para um usuário associado.
Se uma senha incorreta for fornecida ao ChangePasswordQuestionAndAnswer método, os contadores internos que rastreiam tentativas de senha inválidas serão incrementados por um. Isso pode fazer com que o usuário seja bloqueado e não possa fazer logon até que o status do bloqueio seja limpo chamando o UnlockUser método. Se a senha correta for fornecida e o usuário não estiver bloqueado no momento, os contadores internos que rastreiam tentativas inválidas de senha e resposta de senha serão redefinidos para zero. Para obter mais informações, consulte as propriedades e PasswordAttemptWindow as MaxInvalidPasswordAttempts propriedades.
O comprimento máximo para a pergunta de senha é de 256 caracteres. O comprimento máximo para a resposta de senha é de 128 caracteres.
Para obter mais informações, consulte RequiresQuestionAndAnswer, ResetPassword e GetPassword.
Os espaços à esquerda e à direita são cortados de todos os valores de parâmetro.