如果您不知道当前密码,如何使用asp.net会员提供程序更改散列密码?

问题,没有办法:

bool ChangePassword(string newPassword); 

你必须知道当前的密码(可能被散列和忘记)。

这是一个容易的,我浪费了太多的时间。 希望这篇文章能够像其他人一样痛苦地拍打额头。

解决scheme,随机重置密码,并将其传递到更改方法。

 MembershipUser u = Membership.GetUser(); u.ChangePassword(u.ResetPassword(), "myAwesomePassword"); 

如果requiresQuestionAndAnswer =“true”,则无法更改密码

我得到了这个工作

在web.config中创build了两个成员提供者

我使用AspNetSqlMembershipProviderReset提供程序来重新设置密码,因为它具有requiresQuestionAndAnswer = false,而AspNetSqlMembershipProvider是默认提供程序使用。

我写了下面的代码来重置用户的密码。

public bool ResetUserPassword(String psUserName,String psNewPassword){try {//使用secound成员资格提供程序将所需的问题答案设置为false,获取成员资格用户的详细信息。

  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; } } 
Interesting Posts