//密码输入错误锁定账号 存入redis
if (!tbUser.getLoginPass().equalsIgnoreCase(encryption)) {
//判断redis是否存在key,因为我们这块是userName具有唯一性,故可以作为key
String key = String.valueOf(redisUtil.get("LoginName:" + loginName));
if (StringUtils.isNotBlank(key) && !key.equals("null")) {
Integer newerrorLoginCount = (Integer) redisUtil.get("LoginName:" + loginName);
//key为 LoginName: userName value是对应的错误登陆次数
if (newerrorLoginCount == 3) {
long expire = redisUtil.getExpire("LoginName:" + loginName);
if (expire > 0) {
throw new Exception("当前用户锁定中,请" + expire / 60 + "分钟后重试");
}
} else {
redisUtil.set("LoginName:" + loginName, newerrorLoginCount + 1);
if (3 - newerrorLoginCount - 1 == 0) {
redisUtil.set("LoginName:" + loginName, 3, Long.valueOf(600), TimeUnit.SECONDS);
throw new Exception("当前用户已锁定,请10分钟后重试");
}
throw new Exception("密码错误,还有" + (3 - newerrorLoginCount - 1) + "次机会");
}
} else {
redisUtil.set("LoginName:" + loginName, 1);
throw new Exception("密码错误,还有" + 2 + "次机会");
}
} else {
//密码正确,判断redis里面是否有值,有值就代表锁定中
String aBoolean = String.valueOf(redisUtil.get("LoginName:" + loginName));
if (StringUtils.isNotBlank(aBoolean) && !aBoolean.equals("null")) {
Integer value = (Integer) redisUtil.get("LoginName:" + loginName);
if (value == 3) {
long expire = redisUtil.getExpire("LoginName:" + loginName);
if (expire > 0) {
throw new Exception("当前用户锁定中,请" + expire / 60 + "分钟后重试");
}
} else {
//直接删除key
redisUtil.remove("LoginName:" + loginName);
}
}
}
java登录密码错误锁定账号
最新推荐文章于 2024-06-29 11:59:11 发布