我在我的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?该其他用户根本不能将其密码更改为任何内容。
发布于 2010-11-19 22:11:11
听起来这些用户已经被锁在门外了。
MembershipUser.ChangePassword调用SqlMembershipProvider.ChangePassword,如果用户被锁定,则返回false。
https://stackoverflow.com/questions/4001496
复制相似问题