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ěď hesla 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 změní otázku a odpověď na heslo.
- password
- String
Heslo pro zadaného uživatele.
- newPasswordQuestion
- String
Nová otázka s heslem pro zadaného uživatele
- newPasswordAnswer
- String
Nová odpověď na heslo pro zadaného uživatele.
Návraty
truepokud byla aktualizace úspěšná; v opačném případě . false Hodnota false je vrácena také v případě password , že je nesprávná, uživatel je uzamčen nebo uživatel v databázi neexistuje.
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
Zakódovaná verze newPasswordAnswer je 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 hesla a odpovědi v databázi došlo k chybě.
Příklady
Následující příklad kódu aktualizuje otázku hesla a odpověď pro uživatele.
Poznámka:
Tento příklad používá Provider vlastnost Membership třídy k volání SqlMembershipProvider zadané jako v defaultProvider souboru Web.config. Pokud potřebujete přistupovat k výchozímu poskytovateli jako typ SqlMembershipProvider, můžete přetypovat Provider vlastnost Membership třídy. Pokud chcete získat přístup k jiným nakonfigurovaným poskytovatelům jako konkrétnímu typu poskytovatele, můžete k nim přistupovat podle 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
Tato metoda je volána MembershipUser třídou k aktualizaci otázky hesla a odpovědi pro uživatele v databázi SYSTÉMU SQL Server, která je určena v konfiguračním souboru aplikace ASP.NET (Web.config). Odpověď na heslo se zašifruje pomocí formátu zadaného PasswordFormat ve vlastnosti.
Vyžadování otázky a odpovědi s heslem 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ěď, kterou můžete později použít k načtení nebo resetování zapomenutého hesla. Metoda ChangePasswordQuestionAndAnswer aktualizuje otázku hesla a odpověď pro uživatele členství.
Pokud je metodě ChangePasswordQuestionAndAnswer zadáno nesprávné heslo, interní čítače, které sledují neplatné pokusy o heslo, se zvýší o jedno. To může vést k uzamčení uživatele a nemůže se přihlásit, dokud se stav zámku nevymaže voláním UnlockUser metody. Pokud je zadáno správné heslo a uživatel není aktuálně uzamčen, interní čítače, které sledují neplatné heslo a pokusy o odpověď hesla, se resetují na nulu. Další informace naleznete v tématu MaxInvalidPasswordAttempts a PasswordAttemptWindow vlastnosti.
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.
Úvodní a koncové mezery jsou oříznuté ze všech hodnot parametrů.