C# 如何从WebAPI更新AspNetUsers表中现有用户记录的密码

C# 如何从WebAPI更新AspNetUsers表中现有用户记录的密码,c#,asp.net-web-api,asp.net-identity,C#,Asp.net Web Api,Asp.net Identity,我是Web API的新手,在这里我正在使用基于令牌的身份验证。 我用AspNetUsers表完成了所有的登录和注册过程,除了更新密码功能 在这里,我通过传递新密码更新了HashedPassword字段。当我尝试获取特定用户的令牌时,它会返回一些与passwordHash格式相关的错误,因为它直接保存新密码而不使用hash 代码: public string updateUserData(string mEmail,string mPassword) {

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

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

代码:

  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";
        }
public string updateUserData(string mEmail,string mPassword)
{
if(ModelState.IsValid)
{
var userStore=newuserstore(new ApplicationDbContext());
var-manager=新的UserManager(userStore);
ApplicationUser AppModel=manager.FindByEmail(mEmail);
AppModel.PasswordHash=mPassword;
manager.Update(AppModel);
返回“成功”;
}
返回“更新失败”;
}

有人能帮助我以正确的方式完成这项工作吗?如果我犯了任何愚蠢的错误,我会向你道歉。

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

var user = await manager.FindByIdAsync(id);

var token = await manager.GeneratePasswordResetTokenAsync(user);

var result = await manager.ResetPasswordAsync(user, token, "NewPassword");
检查这个答案