2017-10-05 47 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

嗯,我不认为这个问题是格式化以正确的方式,但生病猜生病答案吧反正。

散列是一种方式,所以当用户第一次键入密码并将其存储在数据库中时,就是这样。因此,当用户登录时,您对输入进行散列并将其与存储在数据库中的散列值进行比较。

更改密码的作用完全相同。您可以执行一个原始函数,检查用户是否已经旧的旧密码,然后用新密码进行更新。 你也可以通过电子邮件做到这一点,但那不是你问的。