我正在使用asp.net身份,需要加密密码才能将其与数据库中存在的PasswordHash进行比较。
这是我的代码:
var passHash = new PasswordHasher().HashPassword("123456");
using (EFDbContext _db = new EFDbContext())
{
var users = _db.Users.Where(u => u.PasswordHash == passHash);
}
我得到的结果为空,但是数据库中存在密码为“ 123456”的用户
通常使用PasswordHasher类中的VerifyHashedPassword方法比较密码哈希,这就是代码无法正常工作的原因,请检查以下链接:
如果必须使用该密码来检索用户,我认为您不能使用EF(它不能将VerifyHashedPassword方法转换为sql查询),则必须检索所有用户并比较每个用户的密码。
如果您只想检索一个用户,我将通过电子邮件进行搜索,并使用VerifyHashedPassword比较密码。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句