SqlMembershipProvider.ChangePasswordQuestionAndAnswer Metoda

Definicja

Aktualizuje pytanie dotyczące hasła i odpowiedź dla użytkownika w bazie danych członkostwa programu 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

Parametry

username
String

Użytkownik, aby zmienić pytanie i odpowiedź na hasło.

password
String

Hasło określonego użytkownika.

newPasswordQuestion
String

Nowe pytanie dotyczące hasła dla określonego użytkownika.

newPasswordAnswer
String

Nowa odpowiedź na hasło dla określonego użytkownika.

Zwraca

true jeśli aktualizacja zakończyła się pomyślnie; w przeciwnym razie, false. Wartość false jest również zwracana, jeśli password wartość jest nieprawidłowa, użytkownik jest zablokowany lub użytkownik nie istnieje w bazie danych.

Wyjątki

username jest pustym ciągiem (""), zawiera przecinek lub jest dłuższy niż 256 znaków.

— lub —

password jest pustym ciągiem lub jest dłuższy niż 128 znaków.

— lub —

newPasswordQuestion jest pustym ciągiem lub jest dłuższy niż 256 znaków.

— lub —

newPasswordAnswer jest pustym ciągiem lub jest dłuższy niż 128 znaków.

— lub —

Zakodowana wersja obiektu jest dłuższa newPasswordAnswer niż 128 znaków.

Parametr username ma wartość null.

— lub —

Parametr password ma wartość null.

— lub —

newPasswordQuestion jest null i RequiresQuestionAndAnswer ma wartość true.

— lub —

newPasswordAnswer jest null i RequiresQuestionAndAnswer ma wartość true.

Wystąpił błąd podczas zmiany pytania i odpowiedzi na hasło w bazie danych.

Przykłady

Poniższy przykład kodu aktualizuje pytanie dotyczące hasła i odpowiedź dla użytkownika.

Uwaga / Notatka

W tym przykładzie użyto Provider właściwości Membership klasy do wywołania określonego SqlMembershipProvider elementu jako defaultProvider w pliku Web.config. Jeśli musisz uzyskać dostęp do domyślnego dostawcy jako typu SqlMembershipProvider, możesz rzutować Provider właściwość Membership klasy. Aby uzyskać dostęp do innych skonfigurowanych dostawców jako określonego typu dostawcy, możesz uzyskać do nich dostęp według ich skonfigurowanej nazwy z właściwością ProvidersMembership klasy i rzutować je jako określony typ dostawcy.

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

Uwagi

Ta metoda jest wywoływana przez MembershipUser klasę w celu zaktualizowania pytania i odpowiedzi na hasło użytkownika w bazie danych programu SQL Server określonego w pliku konfiguracji aplikacji ASP.NET (Web.config). Odpowiedź na hasło jest szyfrowana przy użyciu formatu określonego PasswordFormat we właściwości .

Wymaganie pytania i odpowiedzi na hasło zapewnia dodatkową warstwę zabezpieczeń podczas pobierania lub resetowania hasła użytkownika. Podczas tworzenia nazwy użytkownika użytkownik może podać pytanie i odpowiedzieć, które można później użyć do pobrania lub zresetowania zapomnianego hasła. Metoda ChangePasswordQuestionAndAnswer aktualizuje pytanie dotyczące hasła i odpowiedź dla użytkownika członkostwa.

Jeśli do metody podano ChangePasswordQuestionAndAnswer nieprawidłowe hasło, wewnętrzne liczniki śledzące nieprawidłowe próby hasła są zwiększane o jeden. Może to spowodować zablokowanie użytkownika i nie można się zalogować do momentu wyczyszczenia stanu blokady przez wywołanie UnlockUser metody . Jeśli podano poprawne hasło i użytkownik nie jest obecnie zablokowany, wewnętrzne liczniki śledzące nieprawidłowe hasło i próby odpowiedzi na hasło są resetowane do zera. Aby uzyskać więcej informacji, zobacz MaxInvalidPasswordAttempts właściwości i PasswordAttemptWindow .

Maksymalna długość pytania dotyczącego hasła to 256 znaków. Maksymalna długość odpowiedzi na hasło to 128 znaków.

Aby uzyskać więcej informacji, zobacz tematy RequiresQuestionAndAnswer, ResetPassword oraz GetPassword.

Spacje wiodące i końcowe są przycinane ze wszystkich wartości parametrów.

Dotyczy

Zobacz też