我在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?其他用户无法将密码更改为任何内容。
答案 0 :(得分:0)
听起来这些用户已被锁定。
MembershipUser.ChangePassword
调用SqlMembershipProvider.ChangePassword,如果用户被锁定,则返回false
。