SqlMembershipProvider.ChangePassword(String, String, String) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
修改用户的密码。
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
参数
- username
- String
要为其更新密码的用户。
- oldPassword
- String
指定用户的当前密码。
- newPassword
- String
指定用户的新密码。
返回
false 如果提供的旧密码无效,则用户被锁定,或者数据库中不存在用户。
例外
username 为空字符串(“”),包含逗号或长度超过 256 个字符。
-或-
oldPassword 是空字符串或长度超过 128 个字符。
-或-
newPassword 是空字符串或长度超过 128 个字符。
-或-
编码版本的 newPassword 字符数大于 128 个字符。
-或-
更改密码操作已由事件订阅者 ValidatingPassword 取消,并且 FailureInformation 属性为 null。
-或-
newPassword长度小于属性中指定的MinRequiredPasswordLength最小长度。
-或-
中 newPassword 非字母字符的数目小于属性中指定的 MinRequiredNonAlphanumericCharacters 非字母字符数。
-或-
newPassword 不传递属性 PasswordStrengthRegularExpression 中定义的正则表达式。
username 在数据库中找不到。
在数据库中设置新密码值时出错。
发生未经处理的异常。
示例
下面的代码示例修改指定用户的密码。
注释
此示例使用 Provider 类的属性 Membership 调用 SqlMembershipProvider 指定为 defaultProvider Web.config 文件中的指定属性。 如果需要以类型 SqlMembershipProvider的形式访问默认提供程序,则可以强制转换 Provider 类的属性 Membership 。 若要以特定提供程序类型的形式访问其他配置的提供程序,可以使用其配置的名称访问它们,ProvidersMembership并将它们强制转换为特定的提供程序类型。
<%@ 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>
注解
类调用 Membership 此方法,以更新 ASP.NET 应用程序配置文件(Web.config)中指定的 SQL Server 数据库中用户的密码。
最大密码长度为 128 个字符。
如果向 ChangePassword 该方法提供了不正确的密码,则跟踪无效密码尝试的内部计数器将递增一个。 这可能会导致用户被锁定,在调用 UnlockUser 方法清除锁定状态之前无法登录。 如果提供了正确的密码,并且用户当前未锁定,则跟踪无效密码和密码应答尝试的内部计数器将重置为零。 有关详细信息,请参阅和MaxInvalidPasswordAttemptsPasswordAttemptWindow属性。
可以通过先通过Provider类的属性获取对SqlMembershipProvider实例的Membership引用,直接调用ChangePassword该方法。 该 Provider 属性公开 defaultProvider 应用程序 Web.config 文件中指定的属性。 配置的提供程序不是使用 Providers 属性引用的默认提供程序。
还可以使用 ChangePassword 此方法更改用户密码。
从所有参数值中剪裁前导空格和尾随空格。