1

我在我的 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?该其他用户根本无法将其密码更改为任何内容。

4

1 回答 1

0

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

MembershipUser.ChangePassword调用SqlMembershipProvider.ChangePasswordfalse如果用户被锁定则返回。

于 2010-11-19T14:11:10.723 回答