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