|
@@ -84,12 +84,6 @@ public class UserServiceImpl implements UserService {
|
|
|
throw new CustomException(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), ResultEnum.REQUEST_WRONGPARAMS.getRespMsg());
|
|
|
}
|
|
|
User isExistUser = userDao.getUserByNamePass(user.getUserName(), EncryptUtils.StrToMD5(user.getPassword()));
|
|
|
- if (Blank.isEmpty(isExistUser)) {
|
|
|
- return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "帐号或密码错误");
|
|
|
- }
|
|
|
- if (isExistUser.getUserType() != ConstantStr.FRONT_USER) {
|
|
|
- return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "请使用客户端账号登录");
|
|
|
- }
|
|
|
// // 校验验证码
|
|
|
// String storeCode = Convert.toStr(redisUtil.get(user.getUid() + "-captcha"));
|
|
|
// if (Blank.isEmpty(storeCode)) {
|
|
@@ -100,6 +94,38 @@ public class UserServiceImpl implements UserService {
|
|
|
// }
|
|
|
// // 验证码通过则删除验证码
|
|
|
// redisUtil.del(user.getUid() + "-captcha");
|
|
|
+ //获取登陆失败次数
|
|
|
+ Integer count = (Integer) redisUtil.get("Number of password errors:" + user.getUserName() + user.getUserType());
|
|
|
+ if (Blank.isEmpty(count)) {
|
|
|
+ count = 0;
|
|
|
+ }
|
|
|
+ //判断账号是否被锁定
|
|
|
+ if (count >= 5) {
|
|
|
+ long expire = redisUtil.getExpire("Number of password errors:" + user.getUserName() + user.getUserType());
|
|
|
+ long minutes = expire / 60;
|
|
|
+ long second = expire % 60;
|
|
|
+ return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "密码错误次数过多账号已锁定,请" + minutes + "分" + second + "秒后再试");
|
|
|
+ }
|
|
|
+ if (Blank.isEmpty(isExistUser)) {
|
|
|
+ //记录登陆失败次数
|
|
|
+ count++;
|
|
|
+ if (count >= 5) {
|
|
|
+ if (count.equals(5)) {
|
|
|
+ //账号锁定5分钟
|
|
|
+ redisUtil.set("Number of password errors:" + user.getUserName() + user.getUserType(), count, ConstantStr.FIVE_MINUTE);
|
|
|
+ }
|
|
|
+ long expire = redisUtil.getExpire("Number of password errors:" + user.getUserName() + user.getUserType());
|
|
|
+ long minutes = expire / 60;
|
|
|
+ long second = expire % 60;
|
|
|
+ return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "密码错误次数过多账号已锁定,请" + minutes + "分" + second + "秒后再试");
|
|
|
+ } else {
|
|
|
+ redisUtil.set("Number of password errors:" + user.getUserName() + user.getUserType(), count, ConstantStr.FIVE_MINUTE);
|
|
|
+ return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "密码错误,还可尝试" + (5 - count) + "次");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (isExistUser.getUserType() != ConstantStr.FRONT_USER) {
|
|
|
+ return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "请使用客户端账号登录");
|
|
|
+ }
|
|
|
switch (isExistUser.getState()) {
|
|
|
case ConstantStr.NORMAL_USE:
|
|
|
String userId = Convert.toStr(redisUtil.get(ConstantStr.FRONT_USER_String + isExistUser.getUserId()));
|
|
@@ -120,6 +146,8 @@ public class UserServiceImpl implements UserService {
|
|
|
if (userDao.updateLoginState(isExistUser.getUserId()) <= 0) {
|
|
|
return Result.no(ResultEnum.SERVER_ERROR.getRespCode(), "更新登录状态失败");
|
|
|
}
|
|
|
+ //登陆成功则删除错误登陆次数
|
|
|
+ redisUtil.del("Number of password errors:" + user.getUserName() + user.getUserType());
|
|
|
return Result.ok(json);
|
|
|
case ConstantStr.LOCK_USER:
|
|
|
return Result.no(ResultEnum.REQUEST_WRONGPARAMS.getRespCode(), "用户已被锁定,请联系管理员");
|