身份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

回到顶部