我被委托确保用户在更改密码时不能使用以前的密码。为此,当身份验证框架对密码进行哈希处理时,我存储其哈希。我的问题是如何比较用户新选择的密码的哈希和之前保存的密码的哈希?我需要考虑到身份验证框架正在使用的盐。更新:我使用
appUserManager.PasswordHasher.HashPassword(passwordToHash)
来哈希密码,但每次都会创建一个新的哈希(我认为这是因为Identity框架在内部使用盐)。
UserManager<TUser, TKey>.UpdateAsync(TUser user)
方法,并使用后端历史记录表。如果用户正在更改密码,并且这是历史记录中的 N 个密码之一,则使用IdentityResult.Failed("Cannot reuse password.")
拒绝他们。 - Brad ChristieappUserManager.PasswordHasher.HashPassword(passwordToHash)
时,每次都会得到不同的哈希结果。 - webworm