在ASP.NET窗体身份validation中更改用户密码

我在C#(ASP.NET)中编码并使用Forms身份validation。
我想知道哪个是更改用户密码的最佳方法,而不使用asp:ChangePassword控件。
我不想使用重置密码方法。
我只想获取文本框中的密码并将其替换为旧密码。
请注意我使用的PasswordFormat是passwordFormat =“Hashed”
一些代码片段会有所帮助

编辑:

在我的web.config中,我设置了enablePasswordRetrieval =“false”
我使用以下方法

var myUser = Membership.GetUser(userID); bool isChangeSuccess = myUser.ChangePassword( myUser.GetPassword(), ActivateUserPasswordText.Text.Trim()); 

它给了我错误,

此成员资格提供程序尚未配置为支持密码检索。

可以做些什么来解决这些问题? 我真的希望我的PasswordFormat是哈希本身。

问候,
Naveen Jose

得到了解决。 感谢我的开发人员。

 var myUser = Membership.GetUser(userID); bool isChangeSuccess = myUser.ChangePassword( myUser.ResetPassword(), ActivateUserPasswordText.Text.Trim()); 

不能说我喜欢它很多。
我以为ResetPassword()会返回一个bool。

假设您正在使用ASP.NET安全性。

System.Web.Security.MembershipProvider.ChangePassword方法

只有密码的哈希值通常由asp.net成员资格提供程序存储,因此无法检索原始密码。 可以通过配置更改此行为,但不建议这样做。
只需要在更改密码时要求用户输入旧密码。 您可以使用User.ChangePassword方法中用户输入的旧密码,它应该可以正常工作。

此成员资格提供程序尚未配置为支持密码检索。

显示上面的消息是因为您的密码格式是盐,因此您无法获取用户的密码。 如果要执行此操作,请更改密码格式,然后重试。

关于某人使用ApplicationUser而非会员资格的机会 – 因为我不想设置会员提供者 – 您可以这样更改密码:

  Dim manager = New UserManager() Dim userChange As ApplicationUser = manager.FindById(IDUser) userChange.PasswordHash = manager.PasswordHasher.HashPassword(newPassword.Value) Dim val As Object = manager.Update(userChange) 

希望这有助于某人