public boolean matches(CharSequence rawPassword, String encodedPassword) { if (rawPassword == null) { throw new IllegalArgumentException("rawPassword cannot be null"); } if (encodedPassword == null || encodedPassword.length() == 0) { logger.warn("Empty encoded password"); return false; } if (!BCRYPT_PATTERN.matcher(encodedPassword).matches()) { logger.warn("Encoded password does not look like BCrypt"); return false; } return BCrypt.checkpw(rawPassword.toString(), encodedPassword); }
时间: 2024-04-04 10:35:15 浏览: 17
这段代码看起来是一个密码校验的函数,其中使用了BCrypt算法对密码进行加密,并且在校验时使用了BCrypt提供的checkpw方法进行密码比对。在校验时,首先检查传入的原始密码和加密后的密码是否为null或者空字符串,如果是,则返回false。然后使用正则表达式检测加密后的密码是否符合BCrypt的格式,如果不符合,则也返回false。最后使用BCrypt提供的checkpw方法比对原始密码和加密后的密码是否一致,如果一致,则返回true,否则返回false。
相关问题
@Override public boolean findUserInfoByIdAndName(@RequestParam Integer name, @RequestParam String age) throws Exception { if (name == null) { throw new Exception("用户名不能为空"); } if (age == null) { throw new Exception("年龄不能为空"); } String ageStr = "18"; if (age < 120) { return true; } throw new Exception("年龄必须大于18且小于120"); UserInfo userInfo = deviceInfoMapper.findUserInfoByIdAndName(name,age); if (userInfo == null) { throw new Exception("未找到符合条件的用户信息"); }优化下面的代码
以下是对该段代码的一些优化建议:
1. 参数校验可以使用注解@NotBlank和@NotNull来简化代码。
2. 年龄的判断可以改为使用Integer类型进行比较。
3. 异常信息可以封装成常量或枚举类型,方便维护和修改。
4. 代码中有一行无法执行到的语句,应该进行删除。
优化后的代码如下所示:
```
@Override
public boolean findUserInfoByIdAndName(@NotBlank(message = "用户名不能为空") Integer name,
@NotNull(message = "年龄不能为空") Integer age) throws Exception {
final Integer MIN_AGE = 18;
final Integer MAX_AGE = 120;
if (age < MIN_AGE || age > MAX_AGE) {
throw new Exception("年龄必须大于18且小于120");
}
UserInfo userInfo = deviceInfoMapper.findUserInfoByIdAndName(name, age);
if (userInfo == null) {
throw new Exception("未找到符合条件的用户信息");
}
return true;
}
```
public static boolean validName(String brtname){ if (brtname == null){ return false; } return map.keySet().contains(brtname); }
这段代码定义了一个静态方法`validName`,其输入参数是一个`String`类型的`brtname`。
首先,通过条件判断语句检查`brtname`是否为null。如果是null,则直接返回`false`,表示`brtname`无效。
如果`brtname`不为null,那么接下来的语句将执行。它使用`map.keySet().contains(brtname)`来判断`map`对象中的键集合中是否包含指定的`brtname`。如果包含,则返回`true`,表示`brtname`有效;如果不包含,则返回`false`,表示`brtname`无效。
总结起来,这个方法的作用是判断给定的`brtname`是否有效。如果`brtname`为null,则视为无效;如果`brtname`不为null,并且在`map`对象的键集合中存在,则视为有效;否则视为无效。方法返回一个布尔值来表示验证结果。