我正在使用下面的 groovy 代码从 mysql db 中选择具有给定用户名和密码的行。
例如,
我正在寻找以下用户。密码作为 SHA1 哈希密码存储在 db 中。
Name - test7
password - {SHA}01132E914B722741CC3823D0BEACB8364EEAC376
下面是尝试检索记录并失败的常规代码,因为我无法获取记录。我怀疑构造的 sql 查询是错误的。SecurityUtil 类只是解密并将明文密码作为位置参数返回给查询。我们正在使用 mysql 的 sha1 方法生成带有字符串 {SHA1} 的哈希和前缀,然后尝试检索记录。
sql.eachRow("SELECT id FROM users WHERE userName = ? AND password =CONCAT({SHA1},sha1(?))", [username, SecurityUtil.decrypt(password)]) {
authId = String.valueOf(it.id)
}