2

umbracoメンバーのパスワードをプログラムで変更する機能が必要です。ユーザーはumbracoノードに設定したフィールドに新しいパスワードを追加できます。ノードを公開すると新しいパスワードが有効になります。現在のパスワードを次のように変更する方法を見つけました。与えられたもの

 member.ChangePassword(oldPassword, password);

しかし、これを機能させるにはoldpasswordが必要です。また、ユーザーがumbracoノードで古いパスワードを既に変更しているため、提供できません。その後、プログラムで古いパスワードを取得しようとしました。

 string theUserPassword = Membership.GetUser(username).GetPassword();

しかし、これもエラーをスローします

Password Retrieval Not Enabled.

プログラムで古いパスワードを取得する方法はありますか?それとも間違った方向に進んでいますか?

4

3 に答える 3

3

これは古い投稿であり、回答はすでに受け入れられていますが、メソッドのパラメーターにResetPasswordメソッドの戻り値を使用することで、OPが実行したいことを実際に実現できます。oldValueChangePassword

member.ChangePassword(member.ResetPassword(), "New Password")

これにより、ユーザーの既存のパスワードを知らなくても、ユーザーのパスワードを特定の値に変更できます。

于 2014-02-10T12:52:19.777 に答える
2

UmbracoはMicrosoftメンバーシッププロバイダーを使用しています。プロパティ「EnablePasswordRetrieval」をfalseに設定している可能性があります。

パスワードがわからないが変更する必要がある場合は、ResetPasswordメソッドを使用してパスワードbijをリセットできます。

于 2013-02-21T15:15:21.457 に答える
2

古い質問に対する別のオプション:

Umbraco 7.2.4を使用していますが、パスワードを変更する方法は次のとおりです。

var member = Services.MemberService.GetByUsername("username");
Services.MemberService.SavePassword(member, "new password");

ここで、「Services.MemberService」はApplicationContext.Current.Services.MemberServiceからのものです。

コードの最初の行は、パスワードを変更するメンバーを取得する場所です。これは、電子メールまたはIDでも実行できます。

Services.MemberService.GetByEmail("email")
Services.MemberService.GetById(id)

2行目は、パスワードを変更する場所です。自動的にハッシュされます。

于 2015-06-17T14:17:29.600 に答える