代码之家  ›  专栏  ›  技术社区  ›  codeandcloud

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

  •  7
  • codeandcloud  · 技术社区  · 15 年前

    我用C#(ASP.NET)编写代码,并使用表单身份验证。
    我想知道哪种方法是最好的方法来更改用户密码而不使用asp:ChangePassword control.
    我不想使用重置密码的方法。
    我只想抓住我的文本框中的密码,并替换为我的旧密码。
    请注意,我使用的PasswordFormat是PasswordFormat=“Hashed”


    编辑:

    在我的web.config中,我设置了enablePasswordRetrieval=“false”

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


    配置为支持密码 检索。

    如何解决这些问题?

    当做,

    5 回复  |  直到 15 年前
        1
  •  18
  •   codeandcloud    14 年前

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

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

    但不能说我很喜欢它。

        3
  •  2
  •   Nimesh Madhavan    15 年前

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

        4
  •  1
  •   DileepKumar    13 年前

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

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

        5
  •  1
  •   Dave Friedel    11 年前

    如果有人正在使用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)
    

    希望这对别人有帮助