我研究并发现可以编写自定义函数,将其转换为 SQL,但我认为这样做的范围并不大(例如:SQL 将无法使用库和哈希字符串).
我听说过的另一种方法是将我的数据库转换为可枚举的,然后在其上应用我的自定义方法,这种方法可行,但性能不高,因为我将整个数据库保存在内存中,当拥有海量数据。
所以我的问题:是否有一个性能良好的解决方案来在 LINQ 查询中使用自定义方法?
我的具体问题是,我已将加盐密码散列保存在数据库中,当有人想要登录他的帐户时,我必须将数据库中的密码与盐+用户密码输入进行比较,该密码必须进行散列在我的 where 子句中。如果我不使用盐,它会起作用,因为那样,我只需要对用户输入进行哈希处理,这不是数据库的列。
由于我不知道你的代码,伪代码方法是:
var user = service.GetUserByEmail(email);
if (user == null) {
//Invalid User
}
var hash = ComputeHash(user.Salt, inputPwd);
if(user.PasswordHash == hash) {
//User is logged in
} else {
//Invalid Password or email
}