1

Я использую функцию изменения пароля стандартного AspNetSqlMembershipProvider в моем ASP.NET MVC-2 приложения:C# MembershipUser.ChangePassword не работает только для одного пользователя?

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? Этот другой пользователь не может изменить свой пароль на что-либо вообще.

+1

Если это находится в тестовой среде (или если вы можете воссоздать в такой среде), можете ли вы опубликовать значения в таблице пользовательских членских имен для одного из них, и это не сработает (с именами столбцов)? – steinar

+0

Единственный раз, когда метод пароля изменения должен возвращать значение false, если он не выполняет те же проверки пароля, что пользователь, по-видимому, проходит, чтобы войти в систему. Как вы проверяете пароль при входе в систему? Вы также можете попробовать сбросить пароль, а затем посмотреть, можете ли вы его изменить. – Greg

ответ

0

Похоже, что пользователи заблокированы.

MembershipUser.ChangePassword вызывает SqlMembershipProvider.ChangePassword, который возвращает false, если пользователь заблокирован.

Смежные вопросы