Проблема, нет метода:
bool ChangePassword(string newPassword);
Вы должны знать текущий пароль (который, вероятно, хэширован и забыт).
Проблема, нет метода:
bool ChangePassword(string newPassword);
Вы должны знать текущий пароль (который, вероятно, хэширован и забыт).
Это просто, что я потратил слишком много времени. Надеюсь, этот пост спасет кого-то еще от боли, ударяющей по лбу так же сильно, как и я.
Решение, reset пароль случайным образом и передать это в метод изменения.
MembershipUser u = Membership.GetUser();
u.ChangePassword(u.ResetPassword(), "myAwesomePassword");
Вы не можете изменить пароль, если requireQuestionAndAnswer = "true"
У меня есть работа для этого
Созданы два поставщика членства в web.config
Я использую поставщик AspNetSqlMembershipProviderReset для переустановки пароля, так как он имеет requireQuestionAndAnswer = false, где используется поставщик AspNetSqlMembershipProvider.
Я написал следующий код для reset пароля для пользователя.
public bool ResetUserPassword (String psUserName, String psNewPassword) { пытаться { // Получить информацию о членстве пользователя, используя провайдера членских прав с требуемым ответом на вопрос, установленным в false.
MembershipUser currentUser = Membership.Providers["AspNetSqlMembershipProviderReset"].GetUser(psUserName,false);
//Reset the user password.
String vsResetPassword = currentUser.ResetPassword();
//Change the User password with the required password
currentUser.ChangePassword(vsResetPassword, psNewPassword);
//Changed the comments to to force the user to change the password on next login attempt
currentUser.Comment = "CHANGEPASS";
//Check if the user is locked out and if yes unlock the user
if (currentUser.IsLockedOut == true)
{
currentUser.UnlockUser();
}
Membership.Providers["AspNetSqlMembershipProviderReset"].UpdateUser(currentUser); return true;
}
catch (Exception ex)
{
throw ex;
return false;
}
}