ASP Identity Framework中VerifyHashedPassword始终返回Failed问题排查
VerifyHashedPassword验证失败的原因及解决方法
你调用VerifyHashedPassword时的参数顺序完全错误,这是导致验证始终失败的核心原因。
VerifyHashedPassword方法的参数规则是:
- 第一个参数:数据库中存储的用户哈希密码(对应你的代码里的
appUser.PasswordHash) - 第二个参数:用户输入的原始明文密码(对应你的代码里的
model.Password)
你当前的代码把两个参数的顺序搞反了,相当于让方法去验证“存储的哈希密码”是否匹配“新生成的哈希值”,逻辑完全颠倒,所以必然返回PasswordVerificationResult.Failed。
修正后的代码如下:
// 生成哈希的逻辑没问题 var H1 = _signInManager.UserManager.PasswordHasher.HashPassword(model.Password); // 修正VerifyHashedPassword的参数顺序 var V1 = _signInManager.UserManager.PasswordHasher.VerifyHashedPassword(appUser.PasswordHash, model.Password); var res = V1 == PasswordVerificationResult.Success; Assert.IsTrue(res);
内容的提问来源于stack exchange,提问作者KoolKabin
相关产品推荐
相关产品推荐

