SqlMembershipProvider.ChangePasswordQuestionAndAnswer Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
true
pokud 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ů.