問題、方法はありません:
bool ChangePassword(string newPassword);
現在のパスワードを知っている必要があります (おそらくハッシュされて忘れられています)。
問題、方法はありません:
bool ChangePassword(string newPassword);
現在のパスワードを知っている必要があります (おそらくハッシュされて忘れられています)。
これは私があまりにも多くの時間を無駄にした簡単なものです. 願わくば、この投稿が、私のように額を強く叩く痛みから誰かを救ってくれることを願っています。
解決策として、パスワードをランダムにリセットし、それを change メソッドに渡します。
MembershipUser u = Membership.GetUser();
u.ChangePassword(u.ResetPassword(), "myAwesomePassword");
requiresQuestionAndAnswer="true" の場合、パスワードを変更することはできません
私はこれを回避しました
web.config に 2 つのメンバーシップ プロバイダーを作成しました
私はパスワードをリセットするためにAspNetSqlMembershipProviderResetプロバイダーを使用しています.requiresQuestionAndAnswer = falseを持っているので、AspNetSqlMembershipProviderは使用されるデフォルトのプロバイダーです。
ユーザーのパスワードをリセットするために次のコードを書きました。
public bool ResetUserPassword(String psUserName, String psNewPassword) { try { // 必要な質問の回答が false に設定された 2 番目のメンバーシップ プロバイダーを使用して、メンバーシップ ユーザーの詳細を取得します。
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;
}
}