Sdílet prostřednictvím


SqlMembershipProvider.ChangePasswordQuestionAndAnswer Metoda

Definice

Aktualizuje otázku a odpověď na heslo 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, pro který změní otázku a odpověď na heslo.

password
String

Heslo pro zadaného uživatele.

newPasswordQuestion
String

Otázka nového hesla pro zadaného uživatele.

newPasswordAnswer
String

Odpověď nového hesla pro zadaného uživatele.

Návraty

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

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-

Kódovaná verze je newPasswordAnswer 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 a odpovědi na heslo v databázi došlo k chybě.

Příklady

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

Poznámka

Tento příklad používá Provider vlastnost Membership třídy k volání SqlMembershipProvider zadané jako defaultProvider v souboru Web.config. Pokud potřebujete získat přístup k výchozímu poskytovateli jako typ SqlMembershipProvider, můžete přetypovat Provider vlastnost Membership třídy. Chcete-li získat přístup k jiným nakonfigurovaným poskytovatelům jako konkrétnímu typu zprostředkovatele, můžete k nim přistupovat pomocí 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

Tuto metodu MembershipUser volá třída, aby aktualizovala otázku a odpověď na heslo pro uživatele v databázi SQL Serveru, která je zadána v konfiguračním souboru aplikace ASP.NET (Web.config). Odpověď na heslo je zašifrovaná pomocí formátu, který je zadán ve PasswordFormat vlastnosti.

Vyžadování otázky a odpovědi na heslo 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ěď, které lze později použít k načtení nebo resetování zapomenutého hesla. Metoda ChangePasswordQuestionAndAnswer aktualizuje otázku a odpověď na heslo pro uživatele členství.

Pokud je metodě zadáno ChangePasswordQuestionAndAnswer nesprávné heslo, interní čítače, které sledují neplatné pokusy o heslo, se zvýší o jeden. To může vést k tomu, že uživatel bude uzamčen a nebude se moci přihlásit, dokud se stav zámku nevymaže voláním UnlockUser metody. Pokud zadáte správné heslo a uživatel není momentálně uzamčený, pak se interní čítače, které sledují neplatné heslo a pokusy o odpověď na heslo, resetují na nulu. Pokud chcete získat další informace, podívejte se na vlastnosti MaxInvalidPasswordAttempts a PasswordAttemptWindow.

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.

Počáteční a koncové mezery jsou oříznuté ze všech hodnot parametrů.

Platí pro

Viz také