Я использую функцию смены пароля стандартного AspNetSqlMembershipProvider в моем приложении ASP.NET MVC-2:
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?Этот другой пользователь не может изменить свой пароль на что-либо вообще.