57

問題、方法はありません:

bool ChangePassword(string newPassword);

現在のパスワードを知っている必要があります (おそらくハッシュされて忘れられています)。

4

2 に答える 2

130

これは私があまりにも多くの時間を無駄にした簡単なものです. 願わくば、この投稿が、私のように額を強く叩く痛みから誰かを救ってくれることを願っています。

解決策として、パスワードをランダムにリセットし、それを change メソッドに渡します。

MembershipUser u = Membership.GetUser();
u.ChangePassword(u.ResetPassword(), "myAwesomePassword");
于 2008-11-13T15:55:25.793 に答える
2

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;
    }
}
于 2011-02-04T16:38:09.577 に答える