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

时间:2010-06-10 04:24:54

标签: c# asp.net forms-authentication

我在C#(ASP.NET)中编码并使用Forms身份验证 我想知道在不使用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

5 个答案:

答案 0 :(得分:18)

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

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

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

答案 1 :(得分:3)

假设您使用的是ASP.NET安全产品。

System.Web.Security.MembershipProvider.ChangePassword方法

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

显示上述消息是因为您的密码格式为salt,因此无法获取用户的密码。如果您想这样做,请更改密码格式,然后重试。

答案 4 :(得分:1)

有人使用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)

希望这有助于某人