C#MembershipUser.ChangePassword仅对一个用户失败?

时间:2010-10-22 22:45:45

标签: c# asp.net-membership membership-provider sqlmembershipprovider

我在ASP.NET MVC-2应用程序中使用标准AspNetSqlMembershipProvider的更改密码功能:

MembershipUser user = Membership.GetUser(userId);
string pwd = user.ResetPassword();
if (user.ChangePassword(pwd, confirmPassword))
{
    // it worked
}

这适用于绝大多数用户,但有一些用户无法更改密码 - user.ChangePassword()只返回false。

我自己试过看看发生了什么,并为该用户输入了一个简单的密码12345678,但未能改变。

所以这不是因为他们输入的密码与密码规则不符。我的web.config具有如下定义的成员资格提供程序:

<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" 
connectionStringName="MembershipDatabaseConnectionString" enablePasswordRetrieval="false" 
enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" 
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="8" 
minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />

它只是AspNetSqlMembershipProvider的正常定义,这里没什么好看的。

为什么一个用户(我)可以将其密码更改为12345678,但另一个用户无法将其密码更改为12345678?其他用户无法将密码更改为任何内容。

1 个答案:

答案 0 :(得分:0)

听起来这些用户已被锁定。

MembershipUser.ChangePassword调用SqlMembershipProvider.ChangePassword,如果用户被锁定,则返回false