我需要一个功能来改变umbraco成员密码programatically.user可以在我在umbraco节点上设置的字段中添加他们的新密码。当他们发布节点时,新密码将生效。我找到了改变的方法给出一个
的当前密码 member.ChangePassword(oldPassword, password);
但是这需要oldpassword才能工作。我无法提供它,因为用户已经在umbraco节点中更改了旧密码。然后我尝试以编程方式获取旧密码。
string theUserPassword = Membership.GetUser(username).GetPassword();
但这也会引发错误
Password Retrieval Not Enabled.
有没有办法以编程方式获取旧密码?或者我的方向是否错误?
答案 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)
第二行是您更改密码的位置。它会自动散列。