Asp.net身份加密密码

时间:2016-02-06 13:03:28

标签: asp.net-mvc asp.net-identity identity

我正在使用asp.net身份并需​​要加密密码以将其与存在于数据库中的PasswordHash进行比较。

这是我的代码:

 var passHash = new PasswordHasher().HashPassword("123456");
 using (EFDbContext _db = new EFDbContext())
 {
    var users = _db.Users.Where(u => u.PasswordHash == passHash);
 }

我收到一个空的结果,但在数据库中存在密码为“123456”的用户

1 个答案:

答案 0 :(得分:1)

密码哈希通常使用PasswordHasher类中的VerifyHashedPassword方法进行比较,这就是您的代码无效的原因,请查看以下链接:

https://msdn.microsoft.com/en-us/library/microsoft.aspnet.identity.passwordhasher.verifyhashedpassword(v=vs.108).aspx#M:Microsoft.AspNet.Identity.PasswordHasher.VerifyHashedPassword(System.String,System.String)

如果你必须使用该密码检索用户,我认为你不能使用EF(它无法将VerifyHashedPassword方法转换为sql查询),你必须检索所有用户并比较密码对于每一个。

如果您只想检索单个用户,我会通过电子邮件进行搜索,并使用VerifyHashedPassword比较密码。