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