SqlMembershipProvider.ResetPassword(String, String) 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í.
Resetuje heslo uživatele na nové, automaticky vygenerované heslo.
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
Parametry
- username
- String
Uživatel, pro který chcete resetovat heslo.
- passwordAnswer
- String
Odpověď hesla pro zadaného uživatele.
Návraty
Nové heslo pro zadaného uživatele.
Výjimky
Formát passwordAnswer
je neplatný.
-nebo-
Uživatelský účet je nyní uzamčen.
EnablePasswordReset je nastavená na false
hodnotu .
username
v databázi členství nebyla nalezena.
-nebo-
Akce změny hesla byla zrušena odběratelem ValidatingPassword události a FailureInformation vlastnost byla null
.
-nebo-
Při načítání hesla z databáze došlo k chybě.
username
je prázdný řetězec (""), obsahuje čárku nebo je delší než 256 znaků.
-nebo-
passwordAnswer
je prázdný řetězec nebo je delší než 128 znaků a RequiresQuestionAndAnswer je true
.
-nebo-
passwordAnswer
je delší než 128 znaků po kódování.
Došlo k neošetřené výjimce.
Příklady
Následující příklad kódu resetuje heslo uživatele a vrátí nové, automaticky vygenerované heslo.
Poznámka
Tento příklad používá Membership třídu k volání SqlMembershipProvider zadaného jako v defaultProvider
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 . Pokud chcete 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 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>
Poznámky
Tato metoda je volána Membership třídou k resetování hesla pro uživatele v databázi SQL Server zadané v konfiguračním souboru ASP.NET aplikace (Web.config) na novou náhodně vygenerovanou hodnotu. Vrátí se nové heslo.
Poznámka
Náhodné heslo vytvořené metodou ResetPassword nezaručuje předání regulárního výrazu PasswordStrengthRegularExpression ve vlastnosti . Náhodné heslo ale bude splňovat kritéria stanovená vlastnostmi MinRequiredPasswordLength a MinRequiredNonAlphanumericCharacters .
Metoda se ResetPassword nejčastěji používá, PasswordFormat když je vlastnost nastavená na Hashed
hodnotu . Pokud uživatel zapomene heslo s hodnotou hash, heslo nelze načíst. Zprostředkovatel ale může heslo resetovat na nové automaticky vygenerované heslo, pokud uživatel zadá správnou odpověď hesla.
Pokud je pro metodu ResetPassword zadána nesprávná odpověď na heslo, interní čítač, který sleduje neplatné pokusy o heslo, se navýší o jednu. To může vést k tomu, že uživatel bude uzamčen a nebude se moct přihlásit, dokud se stav zámku nevymaže voláním UnlockUser metody . Pokud je zadána správná odpověď na heslo a uživatel není aktuálně uzamčen, pak se interní čítač, který sleduje neplatné pokusy o odpověď na heslo, resetuje na nulu. Pokud chcete získat další informace, podívejte se na vlastnosti MaxInvalidPasswordAttempts a PasswordAttemptWindow.
Metodu ResetPassword můžete volat přímo tak, že nejprve získáte odkaz na SqlMembershipProvider instanci z Provider vlastnosti Membership třídy . Vygenerované heslo bude mít délku nejméně 14 znaků nebo délku zadanou ve MinRequiredPasswordLength vlastnosti a bude obsahovat počet nealfanumerických znaků zadaných ve MinRequiredNonAlphanumericCharacters vlastnosti . Heslo nezaručuje předání regulárního výrazu obsaženého PasswordStrengthRegularExpression ve vlastnosti, pokud je zadán.
Ze všech hodnot parametrů se oříznou počáteční a koncové mezery.
Platí pro
Viz také
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro