在不知道旧密码的情况下更改Umbraco会员密码

时间:2013-02-21 13:48:24

标签: asp.net umbraco

我需要一个功能来改变umbraco成员密码programatically.user可以在我在umbraco节点上设置的字段中添加他们的新密码。当他们发布节点时,新密码将生效。我找到了改变的方法给出一个

的当前密码
 member.ChangePassword(oldPassword, password);

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

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

但这也会引发错误

Password Retrieval Not Enabled.

有没有办法以编程方式获取旧密码?或者我的方向是否错误?

3 个答案:

答案 0 :(得分:3)

我知道这是一篇旧帖子,答案已被接受,但你可以通过ResetPassword方法的oldValue方法的返回值实际实现OP想要做的事情ChangePassword方法:

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

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

答案 1 :(得分:2)

Umbraco使用Microsoft成员资格提供程序。 您可能已将属性“EnablePasswordRetrieval”设置为false。

如果您不知道密码但需要更改密码,可以使用ResetPassword方法重设密码bij。

答案 2 :(得分:2)

旧问题的另一个选择:

我使用的是Umbraco 7.2.4,以下是我更改密码的方法。

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

Where" Services.MemberService"来自ApplicationContext.Current.Services.MemberService。

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

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

第二行是您更改密码的位置。它会自动散列。