Bri*_*Rak 7 .net c# asp.net-mvc hash asp.net-identity-2
我在ASP.NET 5.0 Web应用程序中将用户从旧用户存储迁移到ASP.NET Identity 2.0.我有一种验证遗留哈希的方法,但我想在登录时将它们升级到ASP.NET Identity 2.0哈希.
我创建了一个IPasswordHasher
能够检测和验证遗留哈希的自定义,并PasswordVerificationResult.SuccessRehashNeeded
在适当的时间返回.(如果它检测到散列不是遗留的,那么它只会进入内置的ASP.NET标识哈希验证.)
但是,返回PasswordVerificationResult.SuccessRehashNeeded
似乎并不会导致ASP.NET Identity实际执行任何操作.当IPasswordHasher返回此结果时,是否存在某个配置选项会导致系统重新哈希密码?
如果上面的答案是否定的,那么我建议我只是手动重新哈希并更新用户吗?我会在哪里这样做?我没有在控制器级别看到任何可以看到PasswordVerificationResult的地方.
我是ASP.NET身份的新手,所以我确信我错过了一些简单的东西.提前感谢您的任何指示.
似乎在内置的用户管理器中未实现哈希机制。但是希望您可以轻松实现。考虑一下:
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;
}
}
Run Code Online (Sandbox Code Playgroud)