身份MVC更改密码,然后登录
我正在开发一个API,其中我实现了Login和ResetPassword功能。登录工作正常,并且resetPassword也可以正常工作。但是,当我重置密码并尝试使用新密码登录时,登录失败。重置后,我可以看到哈希和密码字段得到更新,但登录失败。我正在使用下面的代码进行重置。身份MVC更改密码,然后登录
if (user.VerificationCode == model.VerificationCode)     { 
     //var newPasswordHash = UserManager.PasswordHasher.HashPassword(model.NewPassword); 
     //var token = await UserManager.GeneratePasswordResetTokenAsync(user.Id); 
     //user.PasswordHash = newPasswordHash; 
         user.Password = model.NewPassword; 
     //IdentityResult result = await UserManager.ResetPasswordAsync(user.Id, token, newPasswordHash); 
     //IdentityResult result = await UserManager.ChangePasswordAsync(user.Id, user.Password, model.NewPassword); 
     var result = await UserManager.UpdateAsync(user); 
     if (!result.Succeeded) 
     { 
      response.Message = AppConstants.Error; 
      response.IsSuccess = false; 
     } 
     else 
     { 
      response.Message = AppConstants.OperationSuccessful; 
      response.IsSuccess = true; 
     } 
} 
而对于使用登录的SignInManager.PasswordSignInAsync已经给代码。 任何想法在这里做错了什么?
回答:
如果你想使用UpdateAsync方法,你应该先哈希密码: 此方法为我工作:
 public async Task<IHttpActionResult> changePassword(UsercredentialsModel usermodel) { 
    ApplicationUser user = await AppUserManager.FindByIdAsync(usermodel.Id); 
    if (user == null) 
    { 
    return NotFound(); 
    } 
    user.PasswordHash = AppUserManager.PasswordHasher.HashPassword(usermodel.Password); 
    var result = await AppUserManager.UpdateAsync(user); 
    if (!result.Succeeded) 
    { 
    //throw exception...... 
    } 
    return Ok(); 
} 
您可以使用ASLO和RemovePasswordAsync一起AddPasswordAsync更改密码:
await UserManager.RemovePasswordAsync(userId.Id); var result = UserManager.AddPasswordAsync(NewPassword); 
以上是 身份MVC更改密码,然后登录 的全部内容, 来源链接: utcz.com/qa/261940.html







