创建自定义ChangePassword - .net标识
问题描述:
对我如何创建我自己的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);
答
嗯,我不认为这个问题是格式化以正确的方式,但生病猜生病答案吧反正。
散列是一种方式,所以当用户第一次键入密码并将其存储在数据库中时,就是这样。因此,当用户登录时,您对输入进行散列并将其与存储在数据库中的散列值进行比较。
更改密码的作用完全相同。您可以执行一个原始函数,检查用户是否已经旧的旧密码,然后用新密码进行更新。 你也可以通过电子邮件做到这一点,但那不是你问的。
你的发现是什么以及他们没有工作? –