SqlMembershipProvider.ChangePasswordQuestionAndAnswer Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Uppdaterar lösenordsfrågan och svaret för en användare i SQL Server medlemskapsdatabasen.
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
Parametrar
- username
- String
Användaren att ändra lösenordsfrågan och svaret för.
- password
- String
Lösenordet för den angivna användaren.
- newPasswordQuestion
- String
Den nya lösenordsfrågan för den angivna användaren.
- newPasswordAnswer
- String
Det nya lösenordssvaret för den angivna användaren.
Returer
trueom uppdateringen lyckades. annars . false Ett värde för false returneras också om password är felaktigt, användaren är utelåst eller om användaren inte finns i databasen.
Undantag
username är en tom sträng (""), innehåller ett kommatecken eller är längre än 256 tecken.
-eller-
password är en tom sträng eller är längre än 128 tecken.
-eller-
newPasswordQuestion är en tom sträng eller är längre än 256 tecken.
-eller-
newPasswordAnswer är en tom sträng eller är längre än 128 tecken.
-eller-
Den kodade versionen av newPasswordAnswer är längre än 128 tecken.
username är null.
-eller-
password är null.
-eller-
newPasswordQuestion är null och RequiresQuestionAndAnswer är true.
-eller-
newPasswordAnswer är null och RequiresQuestionAndAnswer är true.
Ett fel uppstod vid ändring av lösenordsfrågan och svaret i databasen.
Exempel
I följande kodexempel uppdateras lösenordsfrågan och svaret för en användare.
Note
I det Provider här exemplet används egenskapen för Membership klassen för att anropa den SqlMembershipProvider angivna som defaultProvider i filen Web.config. Om du behöver komma åt standardprovidern som typ SqlMembershipProviderkan du omvandla Provider egenskapen för Membership klassen. För att få åtkomst till andra konfigurerade leverantörer som en specifik providertyp kan du komma åt dem med deras konfigurerade namn med Providers egenskapen Membership för klassen och omvandla dem som den specifika providertypen.
<%@ 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>
Kommentarer
Den här metoden anropas av klassen MembershipUser för att uppdatera lösenordsfrågan och svaret för en användare i den SQL Server databas som anges i ASP.NET-programmets konfigurationsfil (Web.config). Lösenordets svar krypteras med det format som anges i egenskapen PasswordFormat .
Att kräva en lösenordsfråga och ett svar ger ytterligare ett säkerhetslager när du hämtar eller återställer en användares lösenord. När du skapar ett användarnamn kan en användare ange en fråga och ett svar som senare kan användas för att hämta eller återställa ett bortglömt lösenord. Metoden ChangePasswordQuestionAndAnswer uppdaterar lösenordsfrågan och svaret för en medlemskapsanvändare.
Om ett felaktigt lösenord anges till ChangePasswordQuestionAndAnswer metoden ökas de interna räknare som spårar ogiltiga lösenordsförsök med en. Detta kan leda till att användaren blir utelåst och inte kan logga in förrän låsstatusen har rensats genom att anropa UnlockUser metoden. Om rätt lösenord anges och användaren för närvarande inte är utelåst återställs de interna räknare som spårar ogiltiga lösenords- och lösenordssvarsförsök till noll. Mer information finns i egenskaperna MaxInvalidPasswordAttempts och PasswordAttemptWindow.
Den maximala längden för lösenordsfrågan är 256 tecken. Den maximala längden för lösenordssvaret är 128 tecken.
Mer information finns i RequiresQuestionAndAnswer, ResetPasswordoch GetPassword.
Inledande och avslutande blanksteg trimmas från alla parametervärden.