首页 > 解决方案 > 如何从 WebAPI 更新 AspNetUsers 表中现有用户记录的密码

问题描述

我是 Web API 的新手,在这里我正在使用基于令牌的身份验证。除了更新密码功能外,我使用 AspNetUsers 表完成了所有登录和注册过程。

在这里,我通过传递新密码更新了 HashedPassword 字段。当我尝试获取特定用户的令牌时,它返回一些与 passwordHash 格式相关的错误,因为它直接保存新密码而不使用哈希。

代码 :

  public  string updateUserData(string mEmail,string mPassword)
        {
            if (ModelState.IsValid)
            {
                var userStore = new UserStore<ApplicationUser>(new ApplicationDbContext());
                var manager = new UserManager<ApplicationUser>(userStore);
                ApplicationUser AppModel = manager.FindByEmail(mEmail);
                AppModel.PasswordHash = mPassword;
                manager.Update(AppModel);
                return "Success";
            }
            return "Update Failed";
        }

任何人都可以帮助我以正确的方式做到这一点。如果我犯了任何愚蠢的错误,我对此并不陌生,我对此感到抱歉。

标签: c#asp.net-web-apiasp.net-identity

解决方案


创建一个密码重置令牌,然后使用它来更改密码。例子:

var user = await manager.FindByIdAsync(id);

var token = await manager.GeneratePasswordResetTokenAsync(user);

var result = await manager.ResetPasswordAsync(user, token, "NewPassword");

推荐阅读