From abbb9329e0f95686fa10c777055f05ff3847c10a Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Wed, 1 Jan 2020 15:57:55 +0800 Subject: [PATCH] =?UTF-8?q?[=E7=99=BB=E5=BD=95][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E9=94=99=E8=AF=AF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/HomeController.java | 17 +++++++++++++++++ .../controller/sys/WechatLoginController.java | 15 +++++++++++++++ .../shiro/MyRetryLimitCredentialsMatcher.java | 18 ------------------ 3 files changed, 32 insertions(+), 18 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/sys/HomeController.java b/mallinkAdmin/src/main/java/com/iformall/controller/sys/HomeController.java index 45a38d8cc..d98767270 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/sys/HomeController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/sys/HomeController.java @@ -222,6 +222,14 @@ public class HomeController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL); } } + if (user == null) { + logger.error(ErrorCode.USER_IS_EMPTY.getMessage()); + return new ResultData(ErrorCode.USER_IS_EMPTY); + } + if (user.getStatus()==null ||!EnumMallUserStatus.VALID.getCode().equals(user.getStatus())) { + logger.error(ErrorCode.USER_IS_LOCKED.getMessage()); + return new ResultData(ErrorCode.USER_IS_LOCKED); + } boolean isLogin = false; try { @@ -328,6 +336,14 @@ public class HomeController extends BaseController { List userList = mallUserInfoService.getUserByPhone(phone); if(userList.size() == 1) { MallUserInfoVo user = userList.get(0); + if (user == null) { + logger.error(ErrorCode.USER_IS_EMPTY.getMessage()); + return new ResultData(ErrorCode.USER_IS_EMPTY); + } + if (user.getStatus()==null ||!EnumMallUserStatus.VALID.getCode().equals(user.getStatus())) { + logger.error(ErrorCode.USER_IS_LOCKED.getMessage()); + return new ResultData(ErrorCode.USER_IS_LOCKED); + } // check 验证码正确 boolean isValidCode = false; try { @@ -336,6 +352,7 @@ public class HomeController extends BaseController { return new ResultData(Result.ERROR, e.getMessage()); } if(isValidCode) { + // 验证码正确,直接登录 try { Subject subject = SecurityUtils.getSubject(); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/sys/WechatLoginController.java b/mallinkAdmin/src/main/java/com/iformall/controller/sys/WechatLoginController.java index 6d67cd177..d268b79a4 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/sys/WechatLoginController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/sys/WechatLoginController.java @@ -10,6 +10,7 @@ import com.iformall.domain.po.MallUserAction; import com.iformall.domain.po.MallUserInfo; import com.iformall.domain.vo.MallUserInfoVo; import com.iformall.enums.EnumMallUserAction; +import com.iformall.enums.EnumMallUserStatus; import com.iformall.enums.EnumUserAdmin; import com.iformall.service.MallUserActionService; import com.iformall.service.MallUserInfoService; @@ -123,6 +124,14 @@ public class WechatLoginController extends BaseController { Map ret = new HashMap<>(); // 唯一用户 MallUserInfo user = userList.get(0); + if (user == null) { + ret.put("code", ErrorCode.USER_IS_EMPTY.getCode()); + ret.put("message", ErrorCode.USER_IS_EMPTY.getMessage()); + } + if (user.getStatus()==null ||!EnumMallUserStatus.VALID.getCode().equals(user.getStatus())) { + ret.put("code", ErrorCode.USER_IS_LOCKED.getCode()); + ret.put("message", ErrorCode.USER_IS_LOCKED.getMessage()); + } boolean isLogin = false; try { Subject subject = SecurityUtils.getSubject(); @@ -272,6 +281,12 @@ public class WechatLoginController extends BaseController { log.info("KEY: " + openKey + " deleted"); MallUserInfo userInfo = mallUserInfoService.getByUsername(userName); + if (userInfo == null) { + return new ResultData(ErrorCode.USER_IS_EMPTY); + } + if (userInfo.getStatus()==null ||!EnumMallUserStatus.VALID.getCode().equals(userInfo.getStatus())) { + return new ResultData(ErrorCode.USER_IS_LOCKED); + } if(userInfo.getWebOpenId().equals(openId)) { boolean isLogin = false; try { diff --git a/mallinkAdmin/src/main/java/com/iformall/shiro/MyRetryLimitCredentialsMatcher.java b/mallinkAdmin/src/main/java/com/iformall/shiro/MyRetryLimitCredentialsMatcher.java index e71e52c61..f08030e1c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/shiro/MyRetryLimitCredentialsMatcher.java +++ b/mallinkAdmin/src/main/java/com/iformall/shiro/MyRetryLimitCredentialsMatcher.java @@ -1,23 +1,13 @@ package com.iformall.shiro; -import com.iformall.common.ErrorCode; -import com.iformall.domain.po.MallUserInfo; import com.iformall.enums.EnumLoginType; -import com.iformall.enums.EnumMallUserStatus; -import com.iformall.service.MallUserInfoService; import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationToken; -import org.apache.shiro.authc.DisabledAccountException; -import org.apache.shiro.authc.UnknownAccountException; import org.apache.shiro.authc.credential.HashedCredentialsMatcher; import org.springframework.context.annotation.Configuration; -import javax.annotation.Resource; - @Configuration public class MyRetryLimitCredentialsMatcher extends HashedCredentialsMatcher { - @Resource - private MallUserInfoService userService; @Override public boolean doCredentialsMatch(AuthenticationToken authcToken, AuthenticationInfo info) { @@ -26,14 +16,6 @@ public class MyRetryLimitCredentialsMatcher extends HashedCredentialsMatcher { if(tk.getType().equals(EnumLoginType.NOPASSWD)){ // 获取用户的输入的账号. String username = (String)tk.getPrincipal(); - MallUserInfo user = userService.getByUsername(username); - if(user == null) { - throw new UnknownAccountException(ErrorCode.USER_IS_EMPTY.getMessage()); - } - // 用户被禁用 - if(user.getStatus()==null ||!EnumMallUserStatus.VALID.getCode().equals(user.getStatus())) { - throw new DisabledAccountException(ErrorCode.USER_IS_LOCKED.getMessage()); - } return true; } boolean matches = super.doCredentialsMatch(authcToken, info);