2

我需要一个以编程方式更改 umbraco 成员密码的功能。用户可以在我在 umbraco 节点上设置的字段中添加他们的新密码。当他们发布节点时,新密码将生效。我找到了一种将当前密码更改为的方法给定一个

 member.ChangePassword(oldPassword, password);

但这需要旧密码才能工作。我无法提供它,因为用户已经在 umbraco 节点中更改了旧密码。然后我尝试以编程方式获取旧密码。

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

但这也会引发错误

Password Retrieval Not Enabled.

有没有办法以编程方式获取旧密码?还是我走错了方向?

4

3 回答 3

3

我知道这是一个旧帖子,并且已经接受了答案,但是您实际上可以通过将方法的返回值用于ResetPassword方法的oldValue参数来实现 OP 想要做的事情ChangePassword

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

这允许您在不知道用户现有密码的情况下将用户的密码更改为特定值。

于 2014-02-10T12:52:19.777 回答
2

Umbraco 使用 Microsoft Membership Provider。您可能已将属性“ 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。

第一行代码是您获取要更改密码的成员的位置。这也可以通过电子邮件或身份证来完成。

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

第二行是更改密码的地方。它是自动散列的。

于 2015-06-17T14:17:29.600 回答