关于如何创建自己的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);
答案 0 :(得分:0)
好吧,我不认为这个问题的格式是正确的方式,但不好意思就是回答它。
散列是一种方式,因此当用户第一次键入密码并将其存储在数据库中时键入密码。因此,当用户登录时,您将输入哈希并将其与存储在数据库中的哈希值进行比较。
更改密码的工作方式完全相同。您可以执行原始功能,检查用户是否输入现有的旧功能,然后使用新密码进行更新。 您也可以通过电子邮件进行,但这不是您提出的问题。