Asp.net 身份加密密码
Asp.net identity encrypt password
我正在使用 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 class 中的 VerifyHashedPassword 方法比较密码哈希值,这就是您的代码无法正常工作的原因,请检查此 link:
如果您必须使用该密码检索用户,我认为您不能使用 EF(它不能将 VerifyHashedPassword 方法转换为 sql 查询),您必须检索所有用户并比较每个用户的密码。
如果您只想检索单个用户,我会通过电子邮件进行搜索并使用 VerifyHashedPassword 比较密码。
我正在使用 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 class 中的 VerifyHashedPassword 方法比较密码哈希值,这就是您的代码无法正常工作的原因,请检查此 link:
如果您必须使用该密码检索用户,我认为您不能使用 EF(它不能将 VerifyHashedPassword 方法转换为 sql 查询),您必须检索所有用户并比较每个用户的密码。
如果您只想检索单个用户,我会通过电子邮件进行搜索并使用 VerifyHashedPassword 比较密码。