Udostępnij za pośrednictwem


SqlMembershipProvider.ChangePasswordQuestionAndAnswer Metoda

Definicja

Aktualizuje pytanie i odpowiedź na hasło 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 dla 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. Zwracana jest również wartość false , jeśli jest password niepoprawna, 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 jest dłuższa newPasswordAnswer niż 128 znaków.

username to null.

-lub-

password to null.

-lub-

newPasswordQuestion jest i nullRequiresQuestionAndAnswer jest true.

-lub-

newPasswordAnswer jest i nullRequiresQuestionAndAnswer jest 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 i odpowiedź na hasło dla użytkownika.

Uwaga

W tym przykładzie użyto Provider właściwości Membership klasy do wywołania określonego SqlMembershipProvider 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 Membership nazwy z właściwością Providers 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 klasę MembershipUser 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 później może służyć do pobierania lub resetowania zapomnianego hasła. Metoda ChangePasswordQuestionAndAnswer aktualizuje pytanie i odpowiedź na hasło 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ć, dopóki stan blokady nie zostanie wyczyszczone przez wywołanie UnlockUser metody . Jeśli podano poprawne hasło i użytkownik nie jest obecnie zablokowany, wewnętrzne liczniki, które śledzą nieprawidłowe hasła i próby odpowiedzi na hasło, zostaną zresetowane do zera. Aby uzyskać więcej informacji, zobacz właściwości MaxInvalidPasswordAttempts i PasswordAttemptWindow.

Maksymalna długość pytania dotyczącego hasła wynosi 256 znaków. Maksymalna długość odpowiedzi na hasło wynosi 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ż