创建自定义ChangePassword - .net标识

时间:2017-10-05 10:19:01

标签: c# asp.net-identity

关于如何创建自己的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);

1 个答案:

答案 0 :(得分:0)

好吧,我不认为这个问题的格式是正确的方式,但不好意思就是回答它。

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

更改密码的工作方式完全相同。您可以执行原始功能,检查用户是否输入现有的旧功能,然后使用新密码进行更新。 您也可以通过电子邮件进行,但这不是您提出的问题。