2017-10-05 89 views
-1

對我如何創建我自己的changepassword的幫助很少?挑戰在於passwordhashing。嘗試了一些堆棧中找到的例子,但沒有奏效。創建自定義ChangePassword - .net標識

這是我的代碼:

 var currentPassword = _userManager.PasswordHasher.HashPassword(changePassword.CurrentPassword); 
     ApplicationUser user = (from x in _context.AspNetUsers 
           where x.Id == changePassword.UserId && x.PasswordHash == currentPassword 
           select new ApplicationUser() 
           { 
            FirstName = x.FirstName, 
            LastName = x.LastName, 
            RoleId = x.RoleId, 
            LocationId = x.LocationId, 
            IsActive = x.IsActive, 
            CreatedOn = x.CreatedOn, 
            CreatedBy = x.CreatedBy, 
            ModifiedOn = x.ModifiedOn, 
            ModifiedBy = x.ModifiedBy 
           }).SingleOrDefault(); //_userManager.FindById(changePassword.UserId); 

     if (user == null) 
     { 
      //does not exist 
      return 0; 
     } 

     user.PasswordHash = _userManager.PasswordHasher.HashPassword(changePassword.NewPassword); 
     var result = _userManager.Update(user); 
+0

你的發現是什麼以及他們沒有工作? –

回答

0

嗯,我不認爲這個問題是格式化以正確的方式,但生病猜生病答案吧反正。

散列是一種方式,所以當用戶第一次鍵入密碼並將其存儲在數據庫中時,就是這樣。因此,當用戶登錄時,您對輸入進行散列並將其與存儲在數據庫中的散列值進行比較。

更改密碼的作用完全相同。您可以執行一個原始函數,檢查用戶是否已經舊的舊密碼,然後用新密碼進行更新。 你也可以通過電子郵件做到這一點,但那不是你問的。