Sdílet prostřednictvím


SqlMembershipProvider.ChangePasswordQuestionAndAnswer Metoda

Definice

Aktualizuje otázku a odpověď hesla pro uživatele v databázi členství sql Serveru.

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

Parametry

username
String

Uživatel změní otázku a odpověď na heslo.

password
String

Heslo pro zadaného uživatele.

newPasswordQuestion
String

Nová otázka s heslem pro zadaného uživatele

newPasswordAnswer
String

Nová odpověď na heslo pro zadaného uživatele.

Návraty

truepokud byla aktualizace úspěšná; v opačném případě . false Hodnota false je vrácena také v případě password , že je nesprávná, uživatel je uzamčen nebo uživatel v databázi neexistuje.

Výjimky

username je prázdný řetězec (""), obsahuje čárku nebo je delší než 256 znaků.

nebo

password je prázdný řetězec nebo je delší než 128 znaků.

nebo

newPasswordQuestion je prázdný řetězec nebo je delší než 256 znaků.

nebo

newPasswordAnswer je prázdný řetězec nebo je delší než 128 znaků.

nebo

Zakódovaná verze newPasswordAnswer je delší než 128 znaků.

username je null.

nebo

password je null.

nebo

newPasswordQuestion je null a RequiresQuestionAndAnswer je true.

nebo

newPasswordAnswer je null a RequiresQuestionAndAnswer je true.

Při změně otázky hesla a odpovědi v databázi došlo k chybě.

Příklady

Následující příklad kódu aktualizuje otázku hesla a odpověď pro uživatele.

Poznámka:

Tento příklad používá Provider vlastnost Membership třídy k volání SqlMembershipProvider zadané jako v defaultProvider souboru Web.config. Pokud potřebujete přistupovat k výchozímu poskytovateli jako typ SqlMembershipProvider, můžete přetypovat Provider vlastnost Membership třídy. Pokud chcete získat přístup k jiným nakonfigurovaným poskytovatelům jako konkrétnímu typu poskytovatele, můžete k nim přistupovat podle jejich nakonfigurovaného názvu s Providers vlastností Membership třídy a přetypovat je jako konkrétní typ zprostředkovatele.

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

Poznámky

Tato metoda je volána MembershipUser třídou k aktualizaci otázky hesla a odpovědi pro uživatele v databázi SYSTÉMU SQL Server, která je určena v konfiguračním souboru aplikace ASP.NET (Web.config). Odpověď na heslo se zašifruje pomocí formátu zadaného PasswordFormat ve vlastnosti.

Vyžadování otázky a odpovědi s heslem poskytuje další vrstvu zabezpečení při načítání nebo resetování hesla uživatele. Při vytváření uživatelského jména může uživatel zadat otázku a odpověď, kterou můžete později použít k načtení nebo resetování zapomenutého hesla. Metoda ChangePasswordQuestionAndAnswer aktualizuje otázku hesla a odpověď pro uživatele členství.

Pokud je metodě ChangePasswordQuestionAndAnswer zadáno nesprávné heslo, interní čítače, které sledují neplatné pokusy o heslo, se zvýší o jedno. To může vést k uzamčení uživatele a nemůže se přihlásit, dokud se stav zámku nevymaže voláním UnlockUser metody. Pokud je zadáno správné heslo a uživatel není aktuálně uzamčen, interní čítače, které sledují neplatné heslo a pokusy o odpověď hesla, se resetují na nulu. Další informace naleznete v tématu MaxInvalidPasswordAttempts a PasswordAttemptWindow vlastnosti.

Maximální délka otázky hesla je 256 znaků. Maximální délka odpovědi na heslo je 128 znaků.

Další informace najdete v tématech RequiresQuestionAndAnswer, ResetPassword a GetPassword.

Úvodní a koncové mezery jsou oříznuté ze všech hodnot parametrů.

Platí pro

Viz také