gpt4 book ai didi

c# - ASP.NET 身份 2.0 : How to rehash password

转载 作者:太空狗 更新时间:2023-10-29 20:26:44 25 4
gpt4 key购买 nike

我正在将用户从遗留用户存储迁移到我的 ASP.NET 5.0 Web 应用程序中的 ASP.NET Identity 2.0。我有一种验证遗留哈希的方法,但我想在登录时将它们升级到 ASP.NET Identity 2.0 哈希。

我创建了一个自定义的 IPasswordHasher,它能够检测和验证遗留哈希值,并在适当的时候返回 PasswordVerificationResult.SuccessRehashNeeded。 (如果它检测到哈希不是遗留的,它就会简单地通过内置的 ASP.NET Identity 哈希验证。)

但是,返回 PasswordVerificationResult.SuccessRehashNeeded 似乎不会导致 ASP.NET Identity 实际执行任何操作。当 IPasswordHasher 返回此结果时,某处是否有配置选项会导致系统重新散列密码?

如果以上答案是否定的,那么是否建议我简单地重新哈希并手动更新用户?我会在哪里做这个?我在 Controller 级别看不到任何可以看到 PasswordVerificationResult 的地方。

我是 ASP.NET Identity 的新手,所以我确信我遗漏了一些简单的东西。预先感谢您的任何指示。

最佳答案

似乎内置用户管理器中没有实现重新哈希机制。但希望你能轻松实现。考虑一下:

public class ApplicationUserManager : UserManager<ApplicationUser>
{
protected override async Task<bool> VerifyPasswordAsync(
IUserPasswordStore<ApplicationUser, string> store,
ApplicationUser user, string password)
{
var hash = await store.GetPasswordHashAsync(user);
var verifyRes = PasswordHasher.VerifyHashedPassword(hash, password);

if (verifyRes == PasswordVerificationResult.SuccessRehashNeeded)
await store.SetPasswordHashAsync(user, PasswordHasher.HashPassword(password));

return verifyRes != PasswordVerificationResult.Failed;
}
}

关于c# - ASP.NET 身份 2.0 : How to rehash password,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44080599/

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