在如何创建自己的changepassword
上几乎没有帮助?挑战是passwordhashing
。尝试了一些在堆栈上发现但无效的示例。
这是我的代码:
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);
好吧,我认为这个问题的格式不正确,但我猜对不起。
哈希是一种方式,因此,当用户第一次将其键入密码并存储在数据库中时。因此,当用户登录您时,哈希输入并将其与存储在数据库中的哈希值进行比较。
更改密码的工作完全相同。您要么执行一个原始功能,该功能检查用户是否键入现有的功能为旧功能,然后只需使用新密码更新。您也可以通过电子邮件执行此操作,但这不是您问的。