2016-10-06 4 views
2

Ich versuche, das Passwort mit SetPasswordHashAsync mit der unten genannten Methode zu aktualisieren, aber einige Zeit wird das Passwort aktualisiert und einige Zeit ist es nicht. Ich bin mir nicht sicher, was genau ich falsch mache.ASP.NET IDENTITY SetPasswordHashAsync funktioniert nicht

Ich verwende Microsoft.AspNet.Identity 2,0

public async Task<IHttpActionResult> ConfirmUser(ConfirmUserRequest ConfirmUser) 
     { 

      try 
      { 

       if (ConfirmUser==null) 
        return ResponseMessage(CreateResponse(HttpStatusCode.BadRequest, ControllerErrorCodeConstants.InvalidRequest, "Invalid request")); 


       if (!ModelState.IsValid) 
        return BadRequest(ModelState); 

       if (ConfirmUser.UserId == default(int) || string.IsNullOrWhiteSpace(ConfirmUser.Code)) 
       { 
        ModelState.AddModelError("", "User Id and Code are required"); 
        return BadRequest(ModelState); 
       } 

       ConfirmUser.Code = HttpUtility.UrlDecode(ConfirmUser.Code); 

       IUnityContainer container = UnityConfig.GetConfiguredContainer(); 
       ApplicationDbContext _ApplicationDbContext = container.Resolve<ApplicationDbContext>(); 
       AccountUserManager _AppUserManager = container.Resolve<AccountUserManager>(); 
       IUserRepository _IUserRepository = container.Resolve<IUserRepository>(); 

       var User = _AppUserManager.FindById(ConfirmUser.UserId); 

       if (User == null) 
       { 
        ModelState.AddModelError("", "No user found for given User Id."); 
        return BadRequest(ModelState); 
       } 

       string hashedNewPassword = _AppUserManager.PasswordHasher.HashPassword(ConfirmUser.Password); 
       User.PasswordHash = hashedNewPassword; 
       UserStore<Users, AccountRole, int, AccountUserLogin, UserRole, AccountUserClaim> store = new UserStore<Users, AccountRole, int, AccountUserLogin, UserRole, AccountUserClaim>(_ApplicationDbContext); 
       await store.SetPasswordHashAsync(User, hashedNewPassword); 
       await store.UpdateAsync(User); 
       return Ok(); 

      } 
      catch (Exception ex) 
      { 
       // Logging error in database using log4net 
       _log4Net.informational(ex.StackTrace); 
       _log4Net.error(ex); 
       return ResponseMessage(CreateResponse(HttpStatusCode.InternalServerError, ControllerErrorCodeConstants.TechnicalIssue, string.Format("Exception Occurred, {0}", ex.StackTrace))); 
       throw; 
      } 


     } 

Antwort

1

Wenn Sie Passwort aktualisieren müssen, mit dem Kennwort Hasher nicht stören. Verwenden Sie dies:

Verwandte Themen