【问题标题】:Change User Password in ASP.NET Forms Authentication在 ASP.NET 表单身份验证中更改用户密码
【发布时间】:2011-03-01 23:54:35
【问题描述】:

我使用 C# (ASP.NET) 编写代码并使用表单身份验证。
我想知道在不使用 asp:ChangePassword 控件的情况下更改用户密码的最佳方法是什么。
我不想使用重置密码的方法。
我只想获取我在文本框中的密码并将其替换为我的旧密码。
请注意,我使用的 PasswordFormat 是 passwordFormat="Hashed"
一些代码 sn-ps 会有所帮助

编辑:

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

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

它给了我错误,

此会员资格提供者尚未 配置为支持密码 检索。

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

问候,
纳文·何塞

【问题讨论】:

    标签: c# asp.net forms-authentication


    【解决方案1】:

    如果有人使用 ApplicationUser 而不是 Membership - 因为我不想设置 Membership Provider - 你可以通过这种方式更改密码:

                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)
    

    希望这对某人有所帮助

    【讨论】:

      【解决方案2】:

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

      显示上面的信息是因为你的密码格式会是盐,所以你不能得到用户的密码。如果您想这样做,请更改密码格式并重试。

      【讨论】:

      • 感谢 dileep。我对如何找回旧密码更好奇,ChangePassword 确实需要旧密码作为其参数。
      【解决方案3】:

      解决了。感谢我的开发伙伴。

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

      虽然不能说我非常喜欢它。
      我以为 ResetPassword() 会返回一个布尔值。

      【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 我的目的是为丢失的密码创建一个找回密码
      【解决方案5】:

      假设您使用的是 ASP.NET 安全工具。

      System.Web.Security.MembershipProvider.ChangePassword方法

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-26
        • 2015-04-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-19
        相关资源
        最近更新 更多