Scala:使用带有布尔方法的jOOQ DSL



我有这个jOOQ 3.14.4,Scala 2.13代码,其中混合了一些不推荐使用的Play代码:

val user = Option(sql
.selectFrom(USER)
.where(USER.EMAIL.equal(email))
.and(USER.PASSWORD.equal(crypto.sign(password)))
.fetchOne())

注意,emailpasswordStrings。

现在,我想用一个新的Java方法(我从jBCrypt库中获得(来替换使用Play弃用的Crypto的代码:

public static boolean checkpw(String plaintext, String hashed)

1.如何在jOOQ代码中使用BCrypt.checkpw(...)

equal不返回布尔值,如何提取USER.PASSWORDTableField中的实际字符串值?

使用BCrypt.checkpw方法的示例:

// Check that an unencrypted password matches one that has
// previously been hashed
if (BCrypt.checkpw(candidate, hashed))
System.out.println("It matches");
else
System.out.println("It does not match");

2.从加密的角度来看,为了加密密码以将其保存在生产数据库中,jBCrypt是否被认为是安全的

我不知道你第二个问题的答案(我建议你在新问题中问这个问题。两者没有关联(。这是你的第一个答案:

  1. 如何在jOOQ代码中使用BCrypt.checkpw(…(

使用此方法签名,您将不得不从数据库中获取哈希密码,而不是使用SQL进行检查。不能在数据库中执行checkpw后面的Java逻辑。所以这样做吧:

val user = Option(sql
.selectFrom(USER)
.where(USER.EMAIL.equal(email))
.fetchOne())
.filter(u => BCrypt.checkpw(password, u.getPassword))

相关内容

  • 没有找到相关文章

最新更新