SqlMembershipProvider.ResetPassword(String, String) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Setzt das Kennwort eines Benutzers auf ein neues, automatisch generiertes Kennwort zurück.
public:
override System::String ^ ResetPassword(System::String ^ username, System::String ^ passwordAnswer);
public override string ResetPassword (string username, string passwordAnswer);
override this.ResetPassword : string * string -> string
Public Overrides Function ResetPassword (username As String, passwordAnswer As String) As String
Parameter
- username
- String
Der Benutzer, für den das Kennwort zurückgesetzt werden soll.
- passwordAnswer
- String
Die Kennwortantwort für den angegebenen Benutzer.
Gibt zurück
Das neue Kennwort für den angegebenen Benutzer.
Ausnahmen
passwordAnswer
ist ungültig.
- oder -
Das Benutzerkonto ist gegenwärtig gesperrt.
Für EnablePasswordReset ist false
festgelegt.
username
kann in der Mitgliedschaftsdatenbank nicht gefunden werden.
- oder -
Die Aktion zum Ändern des Kennworts wurde von einem Abonnenten des ValidatingPassword-Ereignisses abgebrochen, und die FailureInformation-Eigenschaft war null
.
- oder -
Beim Abrufen des Kennworts aus der Datenbank ist ein Fehler aufgetreten.
username
ist eine leere Zeichenfolge (""), enthält ein Komma oder ist länger als 256 Zeichen.
- oder -
passwordAnswer
ist eine leere Zeichenfolge oder länger als 128 Zeichen, und RequiresQuestionAndAnswer ist true
.
- oder -
passwordAnswer
ist nach der Codierung länger als 128 Zeichen.
Unbehandelte Ausnahme.
Beispiele
Im folgenden Codebeispiel wird das Kennwort eines Benutzers zurückgesetzt und das neue, automatisch generierte Kennwort zurückgegeben.
Hinweis
In diesem Beispiel wird die Membership -Klasse verwendet, um die SqlMembershipProvider angegebene als in defaultProvider
der Web.config-Datei aufzurufen. Wenn Sie auf den Standardanbieter als Typ SqlMembershipProviderzugreifen müssen, können Sie die Provider -Eigenschaft der Membership -Klasse umwandeln. Um auf andere konfigurierte Anbieter als bestimmten Anbietertyp zuzugreifen, können Sie über ihren konfigurierten Namen mit der Providers -Eigenschaft der Membership -Klasse auf sie zugreifen und sie in den spezifischen Anbietertyp umwandeln.
<%@ 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 Page_Load(object sender, EventArgs args)
{
if (!Membership.EnablePasswordReset)
{
FormsAuthentication.RedirectToLoginPage();
}
Msg.Text = "";
if (!IsPostBack)
{
Msg.Text = "Please enter a user name.";
}
else
{
VerifyUsername();
}
}
public void VerifyUsername()
{
MembershipUser user = Membership.GetUser(UsernameTextBox.Text, false);
if (user == null)
{
Msg.Text = "The user name " + Server.HtmlEncode(UsernameTextBox.Text) + " was not found. Please check the value and reenter your user name.";
QuestionLabel.Text = "";
QuestionLabel.Enabled = false;
AnswerTextBox.Enabled = false;
ResetPasswordButton.Enabled = false;
}
else
{
QuestionLabel.Text = user.PasswordQuestion;
QuestionLabel.Enabled = true;
AnswerTextBox.Enabled = true;
ResetPasswordButton.Enabled = true;
}
}
public void ResetPassword_OnClick(object sender, EventArgs args)
{
string newPassword = "";
try
{
newPassword = Membership.Provider.ResetPassword(UsernameTextBox.Text, AnswerTextBox.Text);
}
catch (NotSupportedException e)
{
Msg.Text = "An error has occurred resetting your password: " + e.Message + "." +
"Please check your values and try again.";
}
catch (MembershipPasswordException e)
{
Msg.Text = "Invalid password answer. Please reenter the answer and try again.";
return;
}
catch (System.Configuration.Provider.ProviderException e)
{
Msg.Text = "The specified user name does not exist. Please check your value and try again.";
}
if (newPassword != "")
{
Msg.Text = "Password reset. Your new password is: " + Server.HtmlEncode(newPassword);
}
else
{
Msg.Text = "Password reset failed. Please reenter your values and try again.";
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Reset Password</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Reset Password</h3>
<asp:Label id="Msg" runat="server" ForeColor="maroon" /><br />
Username: <asp:Textbox id="UsernameTextBox" Columns="30" runat="server" AutoPostBack="true" />
<asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server"
ControlToValidate="UsernameTextBox" ForeColor="red"
Display="Static" ErrorMessage="Required" /><br />
Password Question: <b><asp:Label id="QuestionLabel" runat="server" /></b><br />
Answer: <asp:TextBox id="AnswerTextBox" Columns="60" runat="server" Enabled="false" />
<asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
ControlToValidate="AnswerTextBox" ForeColor="red"
Display="Static" ErrorMessage="Required" Enabled="false" /><br />
<asp:Button id="ResetPasswordButton" Text="Reset Password"
OnClick="ResetPassword_OnClick" runat="server" Enabled="false" />
</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 Page_Load(sender As Object, args As EventArgs)
If Not Membership.EnablePasswordReset Then
FormsAuthentication.RedirectToLoginPage()
End If
Msg.Text = ""
If Not IsPostBack Then
Msg.Text = "Please enter a user name."
Else
VerifyUsername()
End If
End Sub
Public Sub VerifyUsername()
Dim user As MembershipUser = Membership.GetUser(UsernameTextBox.Text, False)
If user Is Nothing Then
Msg.Text = "The user name " & Server.HtmlEncode(UsernameTextBox.Text) & " was not found. Please check the value and reenter your user name."
QuestionLabel.Text = ""
QuestionLabel.Enabled = False
AnswerTextBox.Enabled = False
ResetPasswordButton.Enabled = False
Else
QuestionLabel.Text = user.PasswordQuestion
QuestionLabel.Enabled = True
AnswerTextBox.Enabled = True
ResetPasswordButton.Enabled = True
End If
End Sub
Public Sub ResetPassword_OnClick(sender As Object, args As EventArgs)
Dim newPassword As String = ""
Try
newPassword = Membership.Provider.ResetPassword(UsernameTextBox.Text, AnswerTextBox.Text)
Catch e As NotSupportedException
Msg.Text = "An error has occurred resetting your password: " & e.Message & "." & _
"Please check your values and try again."
Catch e As MembershipPasswordException
Msg.Text = "Invalid password answer. Please reenter the answer and try again."
Return
Catch e As System.Configuration.Provider.ProviderException
Msg.Text = "The specified user name does not exist. Please check your value and try again."
End Try
If newPassword <> "" Then
Msg.Text = "Password reset. Your new password is: " & Server.HtmlEncode(newPassword)
Else
Msg.Text = "Password reset failed. Please reenter your values and try again."
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Reset Password</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Reset Password</h3>
<asp:Label id="Msg" runat="server" ForeColor="maroon" /><br />
Username: <asp:Textbox id="UsernameTextBox" Columns="30" runat="server" AutoPostBack="True" />
<asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server"
ControlToValidate="UsernameTextBox" ForeColor="red"
Display="Static" ErrorMessage="Required" /><br />
Password Question: <b><asp:Label id="QuestionLabel" runat="server" /></b><br />
Answer: <asp:TextBox id="AnswerTextBox" Columns="60" runat="server" Enabled="False" />
<asp:RequiredFieldValidator id="AnswerRequiredValidator" runat="server"
ControlToValidate="AnswerTextBox" ForeColor="red"
Display="Static" ErrorMessage="Required" Enabled="False" /><br />
<asp:Button id="ResetPasswordButton" Text="Reset Password"
OnClick="ResetPassword_OnClick" runat="server" Enabled="False" />
</form>
</body>
</html>
Hinweise
Diese Methode wird von der Membership -Klasse aufgerufen, um das Kennwort für einen Benutzer in der SQL Server-Datenbank zurückzusetzen, der in der Konfigurationsdatei der ASP.NET Anwendung (Web.config) angegeben ist, auf einen neuen, zufällig generierten Wert zurückzusetzen. Das neue Kennwort wird zurückgegeben.
Hinweis
Das von der ResetPassword -Methode erstellte zufällige Kennwort übergibt nicht garantiert den regulären Ausdruck in der PasswordStrengthRegularExpression -Eigenschaft. Das zufällige Kennwort erfüllt jedoch die Kriterien, die durch die MinRequiredPasswordLength Eigenschaften und MinRequiredNonAlphanumericCharacters festgelegt wurden.
Die ResetPassword -Methode wird am häufigsten verwendet, wenn die PasswordFormat -Eigenschaft auf Hashed
festgelegt ist. Wenn ein Benutzer ein Kennwort vergisst, das mit Einem Hash versehen ist, kann das Kennwort nicht abgerufen werden. Der Anbieter kann das Kennwort jedoch auf ein neues, automatisch generiertes Kennwort zurücksetzen, wenn der Benutzer die richtige Kennwortantwort bereitstellt.
Wenn für die ResetPassword Methode eine falsche Kennwortantwort angegeben wird, wird der interne Leistungsindikator, der ungültige Kennwortversuche nachverfolgt, um eins erhöht. Dies kann dazu führen, dass der Benutzer gesperrt wird und sich nicht anmelden kann, bis der Sperrstatus durch einen Aufruf der UnlockUser -Methode gelöscht wird. Wenn die richtige Kennwortantwort angegeben wird und der Benutzer derzeit nicht gesperrt ist, wird der interne Zähler, der ungültige Kennwortantwortversuche nachverfolgt, auf Null zurückgesetzt. Weitere Informationen finden Sie in den Ausführungen zur MaxInvalidPasswordAttempts-Eigenschaft und zur PasswordAttemptWindow-Eigenschaft.
Sie können die ResetPassword -Methode direkt aufrufen, indem Sie zunächst einen Verweis auf die SqlMembershipProvider -Instanz aus der Provider -Eigenschaft der Membership -Klasse abrufen. Das generierte Kennwort ist mindestens 14 Zeichen lang oder die in der MinRequiredPasswordLength -Eigenschaft angegebene Länge und enthält die Anzahl von nicht alphanumerischen Zeichen, die in der MinRequiredNonAlphanumericCharacters -Eigenschaft angegeben sind. Es ist nicht garantiert, dass das Kennwort den regulären Ausdruck übergibt, der in der PasswordStrengthRegularExpression -Eigenschaft enthalten ist, sofern einer angegeben ist.
Führende und nachfolgende Leerzeichen werden auf alle Parameterwerte gekürzt.