gpt4 book ai didi

asp.net-core - Identity Core 的密码历史记录

转载 作者:行者123 更新时间:2023-12-04 16:05:54 24 4
gpt4 key购买 nike

密码历史记录有任何默认实现吗?我正在尝试使用身份在我的项目上实现该功能,因此我添加了包含密码哈希的密码历史记录表。当用户更改密码时,usermanager 生成密码哈希。
var passwordHash = _userManager.PasswordHasher.HashPassword(user, newPassword);
如果此哈希未插入密码历史表中,则允许更改密码,否则返回错误

但问题是每次为特定密码生成哈希时,它都会生成无法比较的随机哈希
var passwordHash = _userManager.PasswordHasher.HashPassword(user, newPassword);
哈希不同于
_userManager.ResetPasswordAsync(user, request.Token, password);
生成的密码哈希。

可能是我试图以错误的方式做到这一点。我在实现密码历史记录时犯了什么错误?

谢谢

最佳答案

每次都有不同的哈希值 - 这是默认实现的方式 IPasswordHasher作品。查看此答案以了解更多详细信息:https://stackoverflow.com/a/20622428/6104621 .

因此,对于您的实现密码历史记录,您可以实现 IPasswordHasher或者只是使用方法 PasswordVerificationResult VerifyHashedPassword(TUser user, string hashedPassword, string providedPassword); 使用所有存储的密码哈希验证新密码

举个例子:

var passAlreadyExist = user.UserHistory
.Select(h => h.PasswordHash)
.Distinct()
.Any(hash =>
{
var res = manager.PasswordHasher.VerifyHashedPassword(user, hash, password);
return res == PasswordVerificationResult.Success;
});

哪里 UserHistory - 它是带有一些用户信息的自定义表,如密码、电子邮件、姓名...

关于asp.net-core - Identity Core 的密码历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48783202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com