SqlMembershipProvider.ChangePasswordQuestionAndAnswer Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 null
RequiresQuestionAndAnswer jest true
.
-lub-
newPasswordAnswer
jest i null
RequiresQuestionAndAnswer 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.