Scala:使用带有布尔方法的 jOOQ DSL
Scala: using jOOQ DSL with boolean methods
我有这个 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())
注意 email
和 password
是 String
。
现在,我想用新的 Java 方法(我从 jBCrypt
库中获取)替换使用 Play
已弃用 Crypto
的代码:
public static boolean checkpw(String plaintext, String hashed)
1.如何在 jOOQ 代码中使用 BCrypt.checkpw(...)
?
equal
不是 return 布尔值,如何提取 USER.PASSWORD TableField
?
中的实际字符串值
使用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
从密码学的角度来看,出于加密密码以将其保存在生产数据库中的目的,是否被认为是安全的?
我不知道你第二个问题的答案(我建议你在一个新问题中提出这个问题。这两个问题没有关系)。这是您第一个问题的答案:
- How can I use BCrypt.checkpw(...) inside the jOOQ code?
使用此方法签名,您必须从数据库中获取散列密码,而不是使用 SQL 检查它。您不能在数据库中执行 checkpw
后面的 Java 逻辑。所以这样做:
val user = Option(sql
.selectFrom(USER)
.where(USER.EMAIL.equal(email))
.fetchOne())
.filter(u => BCrypt.checkpw(password, u.getPassword))
我有这个 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())
注意 email
和 password
是 String
。
现在,我想用新的 Java 方法(我从 jBCrypt
库中获取)替换使用 Play
已弃用 Crypto
的代码:
public static boolean checkpw(String plaintext, String hashed)
1.如何在 jOOQ 代码中使用 BCrypt.checkpw(...)
?
equal
不是 return 布尔值,如何提取 USER.PASSWORD TableField
?
使用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
从密码学的角度来看,出于加密密码以将其保存在生产数据库中的目的,是否被认为是安全的?
我不知道你第二个问题的答案(我建议你在一个新问题中提出这个问题。这两个问题没有关系)。这是您第一个问题的答案:
- How can I use BCrypt.checkpw(...) inside the jOOQ code?
使用此方法签名,您必须从数据库中获取散列密码,而不是使用 SQL 检查它。您不能在数据库中执行 checkpw
后面的 Java 逻辑。所以这样做:
val user = Option(sql
.selectFrom(USER)
.where(USER.EMAIL.equal(email))
.fetchOne())
.filter(u => BCrypt.checkpw(password, u.getPassword))