SqlMembershipProvider.ChangePassword(String, 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í.
Upraví heslo uživatele.
public:
override bool ChangePassword(System::String ^ username, System::String ^ oldPassword, System::String ^ newPassword);
public override bool ChangePassword(string username, string oldPassword, string newPassword);
override this.ChangePassword : string * string * string -> bool
Public Overrides Function ChangePassword (username As String, oldPassword As String, newPassword As String) As Boolean
Parametry
- username
- String
Uživatel, pro který má heslo aktualizovat.
- oldPassword
- String
Aktuální heslo pro zadaného uživatele.
- newPassword
- String
Nové heslo pro zadaného uživatele.
Návraty
true pokud se heslo úspěšně aktualizovalo.
false pokud je zadané staré heslo neplatné, je uživatel 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
oldPassword je prázdný řetězec nebo delší než 128 znaků.
nebo
newPassword je prázdný řetězec nebo delší než 128 znaků.
nebo
Zakódovaná verze newPassword je větší než 128 znaků.
nebo
Akce change-password byla zrušena odběratelem ValidatingPassword události a FailureInformation vlastnost byla null.
nebo
Délka newPassword je menší než minimální délka zadaná ve MinRequiredPasswordLength vlastnosti.
nebo
Počet jiných než abecedních znaků je newPassword menší než požadovaný počet ne abecedních znaků zadaných MinRequiredNonAlphanumericCharacters ve vlastnosti.
nebo
newPassword nepředává regulární výraz definovaný ve PasswordStrengthRegularExpression vlastnosti.
username nebyla v databázi nalezena.
Při nastavování nové hodnoty hesla v databázi došlo k chybě.
Došlo k neošetřené výjimce.
Příklady
Následující příklad kódu upraví heslo pro zadaného 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 ChangePassword_OnClick(object sender, EventArgs args)
{
try
{
// Update the password.
if (Membership.Provider.ChangePassword(User.Identity.Name, OldPasswordTextbox.Text, PasswordTextbox.Text))
{
Msg.Text = "Password changed.";
return;
}
}
catch
{
}
Msg.Text = "Password change failed. Please re-enter your values and try again.";
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Change Password</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Change Password for <%=User.Identity.Name%></h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" />
<table cellpadding="3" border="0">
<tr>
<td>Old Password:</td>
<td><asp:Textbox id="OldPasswordTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
ControlToValidate="OldPasswordTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>Password:</td>
<td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="PasswordRequiredValidator" runat="server"
ControlToValidate="PasswordTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>Confirm Password:</td>
<td><asp:Textbox id="PasswordConfirmTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="PasswordConfirmRequiredValidator" runat="server"
ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
Display="Static"
ErrorMessage="Required" />
<asp:CompareValidator id="PasswordConfirmCompareValidator" runat="server"
ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
Display="Static" ControlToCompare="PasswordTextBox"
ErrorMessage="Confirm password must match password." />
</td>
</tr>
<tr>
<td></td>
<td><asp:Button id="ChangePasswordButton" Text="Change Password"
OnClick="ChangePassword_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 ChangePassword_OnClick(sender As Object, args As EventArgs)
Try
' Update the password.
If Membership.Provider.ChangePassword(User.Identity.Name, _
OldPasswordTextbox.Text, _
PasswordTextbox.Text) Then
Msg.Text = "Password changed."
Return
End If
Catch
End Try
Msg.Text = "Password change failed. Please re-enter your values and try again."
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Change Password</title>
</head>
<body>
<form id="form1" runat="server">
<h3>Change Password for <%=User.Identity.Name%></h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" />
<table cellpadding="3" border="0">
<tr>
<td>Old Password:</td>
<td><asp:Textbox id="OldPasswordTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="OldPasswordRequiredValidator" runat="server"
ControlToValidate="OldPasswordTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>Password:</td>
<td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="PasswordRequiredValidator" runat="server"
ControlToValidate="PasswordTextbox" ForeColor="red"
Display="Static" ErrorMessage="Required" /></td>
</tr>
<tr>
<td>Confirm Password:</td>
<td><asp:Textbox id="PasswordConfirmTextbox" runat="server" TextMode="Password" /></td>
<td><asp:RequiredFieldValidator id="PasswordConfirmRequiredValidator" runat="server"
ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
Display="Static"
ErrorMessage="Required" />
<asp:CompareValidator id="PasswordConfirmCompareValidator" runat="server"
ControlToValidate="PasswordConfirmTextbox" ForeColor="red"
Display="Static" ControlToCompare="PasswordTextBox"
ErrorMessage="Confirm password must match password." />
</td>
</tr>
<tr>
<td></td>
<td><asp:Button id="ChangePasswordButton" Text="Change Password"
OnClick="ChangePassword_OnClick" runat="server" /></td>
</tr>
</table>
</form>
</body>
</html>
Poznámky
Tato metoda je volána Membership třídou k aktualizaci hesla pro uživatele v databázi SQL Serveru zadané v konfiguračním souboru aplikace ASP.NET (Web.config).
Maximální délka hesla je 128 znaků.
Pokud je metodě ChangePassword zadáno nesprávné heslo, interní čítač, který sleduje 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.
Metodu ChangePassword můžete volat přímo tak, že nejprve získáte odkaz na SqlMembershipProvider instanci prostřednictvím Provider vlastnosti Membership třídy. Vlastnost Provider zveřejňuje defaultProvider zadané v souboru Web.config pro aplikaci. Nakonfigurovaní zprostředkovatelé, kteří nejsou výchozími zprostředkovateli odkazovanými pomocí Providers vlastnosti.
Pomocí této metody můžete také změnit uživatelská hesla ChangePassword .
Úvodní a koncové mezery jsou oříznuté ze všech hodnot parametrů.