SqlMembershipProvider.ChangePassword(String, String, String) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Modyfikuje hasło użytkownika.
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żytkownik, który zaktualizuje hasło.
- oldPassword
- String
Bieżące hasło dla określonego użytkownika.
- newPassword
- String
Nowe hasło dla określonego użytkownika.
Zwraca
true
jeśli hasło zostało pomyślnie zaktualizowane.
false
Jeśli podane stare hasło jest nieprawidłowe, użytkownik jest zablokowany lub użytkownik nie istnieje w bazie danych.
Wyjątki
username
jest pustym ciągiem (""), zawiera przecinek lub jest dłuższy niż 256 znaków.
-lub-
oldPassword
jest pustym ciągiem lub dłuższym niż 128 znaków.
-lub-
newPassword
jest pustym ciągiem lub dłuższym niż 128 znaków.
-lub-
Zakodowana wersja pliku newPassword
jest większa niż 128 znaków.
-lub-
Akcja zmiany hasła została anulowana przez subskrybenta zdarzenia ValidatingPassword , a FailureInformation właściwość to null
.
-lub-
Długość newPassword
elementu jest mniejsza niż minimalna długość określona MinRequiredPasswordLength we właściwości .
-lub-
Liczba znaków innych niż alfabetyczne w obiekcie newPassword
jest mniejsza niż wymagana liczba znaków innych niż alfabetyczne określone we MinRequiredNonAlphanumericCharacters właściwości .
-lub-
newPassword
nie przekazuje wyrażenia regularnego zdefiniowanego PasswordStrengthRegularExpression we właściwości .
username
nie można odnaleźć w bazie danych.
Wystąpił błąd podczas ustawiania nowej wartości hasła w bazie danych.
Wystąpił nieobsługiwany wyjątek.
Przykłady
Poniższy przykład kodu modyfikuje hasło dla określonego użytkownika.
Uwaga
W tym przykładzie użyto Provider właściwości Membership klasy do wywołania określonego SqlMembershipProvider jako defaultProvider
w pliku Web.config. Jeśli musisz uzyskać dostęp do domyślnego dostawcy jako typu SqlMembershipProvider, możesz rzutować Provider właściwość Membership klasy . Aby uzyskać dostęp do innych skonfigurowanych dostawców jako określony typ dostawcy, możesz uzyskać do nich dostęp za pomocą ich skonfigurowanej nazwy z Providers właściwością Membership klasy i rzutować je jako określony typ dostawcy.
<%@ 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>
Uwagi
Ta metoda jest wywoływana przez Membership klasę w celu zaktualizowania hasła użytkownika w bazie danych programu SQL Server określonego w pliku konfiguracji aplikacji ASP.NET (Web.config).
Maksymalna długość hasła to 128 znaków.
Jeśli do metody podano ChangePassword nieprawidłowe hasło, wewnętrzny licznik, który śledzi nieprawidłowe próby hasła, jest zwiększany o jeden. Może to spowodować zablokowanie użytkownika i nie można się zalogować, dopóki stan blokady nie zostanie wyczyszczone przez wywołanie UnlockUser metody . Jeśli podano poprawne hasło i użytkownik nie jest obecnie zablokowany, wewnętrzne liczniki śledzące nieprawidłowe hasło i próby odpowiedzi na hasło są resetowane do zera. Aby uzyskać więcej informacji, zobacz właściwości MaxInvalidPasswordAttempts i PasswordAttemptWindow.
Metodę ChangePassword można wywołać bezpośrednio, uzyskując najpierw odwołanie do SqlMembershipProvider wystąpienia za pomocą Provider właściwości Membership klasy . Właściwość Provider uwidacznia defaultProvider
określony w pliku Web.config aplikacji. Skonfigurowani dostawcy, którzy nie są domyślnym dostawcą, do których odwołuje się Providers właściwość .
Hasła użytkowników można również zmienić przy użyciu ChangePassword metody .
Spacje wiodące i końcowe są przycinane ze wszystkich wartości parametrów.