【发布时间】:2022-01-11 10:13:11
【问题描述】:
我目前正在使用 Identity Server 4,目前当用户登录时,我需要对他们提供的密码进行哈希处理,然后与存储在数据库中的密码进行比较(也进行哈希处理)
经过一番搜索,我被链接到 Identity Server 中的 PasswordHasher 来处理这个问题:
var _hasher = new PasswordHasher<User>();
var hashpassword = _hasher.HashPassword(user, context.Password);
User 是我的自定义类,它继承自 IdentityUser,但是,当检查哈希密码与数据库中的密码完全不同时,我已经仔细检查了密码,我可以确认它是正确的。
谁能说明为什么我看到的哈希值可能与数据库中的哈希值不同?
【问题讨论】:
-
你是如何对数据库中已有的密码进行哈希处理的?
-
使用 await _userManager.CreateAsync(user, "Password1!"); 时自动完成的;
-
使用
_userManager.PasswordHasher而不是实例化一个新的。 IPasswordHasher 是一个接口,因此 UserManager 可能与您使用的实现不同,如果是,它可能会指定不同的属性,例如散列算法和迭代次数
标签: c# identityserver4 password-hash