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ý se 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é, 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-
oldPassword
je prázdný řetězec nebo delší než 128 znaků.
-nebo-
newPassword
je prázdný řetězec nebo delší než 128 znaků.
-nebo-
Kódovaná verze je newPassword
větší než 128 znaků.
-nebo-
Akce změny hesla byla zrušena odběratelem ValidatingPassword události a FailureInformation vlastnost byla null
.
-nebo-
Délka parametru newPassword
je menší než minimální délka zadaná ve MinRequiredPasswordLength vlastnosti .
-nebo-
Počet nea abecedních znaků v newPassword
souboru je menší než požadovaný počet znaků, které nejsou abecední, zadané ve MinRequiredNonAlphanumericCharacters vlastnosti .
-nebo-
newPassword
nepředá 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é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 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
Tuto metodu Membership volá třída k aktualizaci hesla pro uživatele v databázi SQL Serveru zadané v konfiguračním souboru ASP.NET aplikace (Web.config).
Maximální délka hesla je 128 znaků.
Pokud je metodě zadáno ChangePassword nesprávné heslo, interní čítač, který sleduje neplatné pokusy o heslo, se navýší o jeden. 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áno správné heslo a uživatel není aktuálně uzamčen, pak se interní čítače, které sledují neplatné heslo a pokusy o odpověď na heslo, resetují na nulu. Pokud chcete získat další informace, podívejte se na vlastnosti MaxInvalidPasswordAttempts a PasswordAttemptWindow.
Můžete volat metodu ChangePassword 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 poskytovateli odkazovanými Providers pomocí vlastnosti .
Hesla uživatelů můžete také změnit pomocí ChangePassword metody .
Ze všech hodnot parametrů se oříznou počáteční a koncové mezery.