作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在将用户从遗留用户存储迁移到我的 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/
我是一名优秀的程序员,十分优秀!