2017-12-18 5 views
1

Login 및 ResetPassword 기능을 구현 한 API에서 작업하고 있습니다. 로그인 잘 작동하고 resetPassword 잘 작동합니다. 그러나 암호를 재설정하고 새 암호를 사용하여 로그인하려고하면 로그인이 실패합니다. 재설정시 해시 및 암호 필드가 업데이트되지만 로그인이 실패하는 것을 볼 수 있습니다. 다음 코드를 재설정에 사용하고 있습니다.Identity 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 방법을 사용하려면

답변

0

, 먼저 암호를 해시해야합니다 를이 방법은 나를 위해 일한 :

await UserManager.RemovePasswordAsync(userId.Id); 

var result = UserManager.AddPasswordAsync(NewPassword); 
:

 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(); 
} 

사용 RemovePasswordAsync을 끄트머리 수 AddPasswordAsync 함께 암호를 변경하려면