diff --git a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/CommonConstant.java b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/CommonConstant.java index ac2b595f..927d736e 100644 --- a/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/CommonConstant.java +++ b/jero-boot/jero-boot-base/jero-boot-base-core/src/main/java/com/jero/common/constant/CommonConstant.java @@ -71,6 +71,8 @@ public class CommonConstant { public static final Integer SC_INTERNAL_SERVER_ERROR_500 = 500; /** {@code 200 OK} (HTTP/1.0 - RFC 1945) */ public static final Integer SC_OK_200 = 200; + /** {@code 600 OK} (自编,RSA过期) */ + public static final Integer SC_RSA_TIMEOUT_600 = 600; /**访问权限认证未通过 510*/ public static final Integer SC_JERO_NO_AUTHZ=510; diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java index 871c8316..12a5f824 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/controller/SysPermissionController.java @@ -69,7 +69,6 @@ public class SysPermissionController { * @return */ @GetMapping("/page") - @RequiresPermissions("permission:list") public Results> list() { long start = System.currentTimeMillis(); Results> result = new Results<>(); @@ -96,7 +95,6 @@ public class SysPermissionController { * @return */ @GetMapping("/getSystemMenuList") - @RequiresPermissions("permission:list") public Results> getSystemMenuList() { long start = System.currentTimeMillis(); Results> result = new Results<>(); @@ -126,7 +124,6 @@ public class SysPermissionController { * @return */ @GetMapping("/getSystemSubmenu") - @RequiresPermissions("permission:list") public Results> getSystemSubmenu(@RequestParam("parentId") String parentId){ Results> result = new Results<>(); try{ @@ -157,7 +154,6 @@ public class SysPermissionController { * @return 返回 key-value 的 Map */ @GetMapping("/getSystemSubmenuBatch") - @RequiresPermissions("permission:list") public Results>> getSystemSubmenuBatch(@RequestParam("parentIds") String parentIds) { try { LambdaQueryWrapper query = new LambdaQueryWrapper<>(); @@ -191,7 +187,6 @@ public class SysPermissionController { * @return */ @GetMapping("/getUserPermissionByToken") - @RequiresPermissions("permission:list") public Results getUserPermissionByToken() { Results result = new Results<>(); try { @@ -322,7 +317,6 @@ public class SysPermissionController { * @return */ @GetMapping("/queryTreeList") - @RequiresPermissions("permission:list") public Results> queryTreeList() { Results> result = new Results<>(); // 全部权限ids @@ -355,7 +349,6 @@ public class SysPermissionController { * @return */ @GetMapping("/queryListAsync") - @RequiresPermissions("permission:list") public Results> queryAsync(@RequestParam(name = "pid", required = false) String parentId) { Results> result = new Results<>(); try { @@ -379,7 +372,6 @@ public class SysPermissionController { * @return */ @GetMapping("/queryRolePermission") - @RequiresPermissions("permission:list") public Results> queryRolePermission(@RequestParam(name = "roleId", required = true) String roleId) { Results> result = new Results<>(); try { @@ -669,7 +661,6 @@ public class SysPermissionController { * @return */ @GetMapping("/getPermRuleListByPermId") - @RequiresPermissions("permission:list") public Results> getPermRuleListByPermId(SysPermissionDataRule sysPermissionDataRule) { List permRuleList = sysPermissionDataRuleService.getPermRuleListByPermId(sysPermissionDataRule.getPermissionId()); Results> result = new Results<>(); @@ -741,7 +732,6 @@ public class SysPermissionController { * @return */ @GetMapping("/queryPermissionRule") - @RequiresPermissions("permission:list") public Results> queryPermissionRule(SysPermissionDataRule sysPermissionDataRule) { try { List permRuleList = sysPermissionDataRuleService.queryPermissionRule(sysPermissionDataRule); @@ -758,7 +748,6 @@ public class SysPermissionController { * @return */ @GetMapping("/queryDepartPermission") - @RequiresPermissions("permission:list") public Results> queryDepartPermission(@RequestParam(name = "departId", required = true) String departId) { Results> result = new Results<>(); try { diff --git a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java index c334d61b..31f6db76 100644 --- a/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java +++ b/jero-boot/jero-boot-module-system/src/main/java/com/jero/modules/system/service/impl/LoginServiceImpl.java @@ -80,25 +80,21 @@ public class LoginServiceImpl implements ILoginService { String rsaPrivateKey = redisUtil.get(rsaPublicKey) != null ? String.valueOf(redisUtil.get(rsaPublicKey)) : null; if(StrUtil.isEmpty(rsaPrivateKey)){ - return Results.error("页面过期,请刷新页面"); +· return Results.error(CommonConstant.SC_RSA_TIMEOUT_600, "页面过期,将刷新页面"); } - //update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 - //前端密码加密,后端进行密码解密 - //password = AesEncryptUtil.desEncrypt(sysLoginModel.getPassword().replaceAll("%2B", "\\+")).trim();//密码解密 - //update-begin--Author:scott Date:20190805 for:暂时注释掉密码加密逻辑,有点问题 - //update-begin-author:taoyan date:20190828 for:校验验证码 String captcha = sysLoginModel.getCaptcha(); if(captcha==null){ return Results.error("验证码无效"); } String lowerCaseCaptcha = captcha.toLowerCase(); - String realKey = MD5Util.MD5Encode(lowerCaseCaptcha+sysLoginModel.getCheckKey(), UTF_8); + String realKey = MD5Util.MD5Encode(lowerCaseCaptcha + sysLoginModel.getCheckKey(), UTF_8); Object checkCode = redisUtil.get(realKey); - //当进入登录页时,有一定几率出现验证码错误 #1714 - if(checkCode==null || !checkCode.toString().equals(lowerCaseCaptcha)) { + // 验证码前后端比较 + if(checkCode == null || !checkCode.toString().equals(lowerCaseCaptcha)) { return Results.error("验证码错误"); } + try { //解密获取密码和用户名 password = CommonUtils.decryptBtRsaPriKey(password, rsaPrivateKey); @@ -106,6 +102,7 @@ public class LoginServiceImpl implements ILoginService { } catch (Exception e) { e.printStackTrace(); } + //1. 校验用户是否有效 //update-begin-author:wangshuai date:20200601 for: 登录代码验证用户是否注销bug,if条件永远为false LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); @@ -131,9 +128,8 @@ public class LoginServiceImpl implements ILoginService { if (!syspassword.equals(userpassword)) { // 重试登录次数加一 retryCount++; - setRedis(username, retryCount); - //String msg = retryCount == RETRY_LOGIN_MAX_COUNT ? "密码错误次数过多,请稍后重试":"用户名或密码错误,剩余可登录次数:"+(RETRY_LOGIN_MAX_COUNT - retryCount); - String msg = retryCount == RETRY_LOGIN_MAX_COUNT ? "密码错误次数过多,请稍后重试":"用户名或密码错误"; + this.setRetryInfoToRedis(username, retryCount); + String msg = retryCount == RETRY_LOGIN_MAX_COUNT ? "密码错误次数过多,请稍后重试":"用户名或密码错误,剩余可登录次数:"+(RETRY_LOGIN_MAX_COUNT - retryCount); return Results.error(msg); } //登录成功,清除错误登录次数 @@ -156,7 +152,12 @@ public class LoginServiceImpl implements ILoginService { } - private void setRedis(String username, int retryCount) { + /** + * 登录重试信息存入redis + * @param username + * @param retryCount + */ + private void setRetryInfoToRedis(String username, int retryCount) { if( retryCount == 1){ redisUtil.set(RETRY_LOGIN_PREFIX + username,retryCount,60L * 15L); }else { @@ -164,14 +165,19 @@ public class LoginServiceImpl implements ILoginService { } } + /** + * 校验用户是否有权限 + * @param username + * @return + */ private boolean checkSysPermission(String username) { // 登录成功之后验证是否有权限 List metaList = sysPermissionService.queryByUser(username); if(CollectionUtils.isEmpty(metaList)){ return true; } - long l = metaList.stream().filter(o-> Objects.equals(o.getMenuType(),0)).count(); - return l <= 0; + long menuSize = metaList.stream().filter(o-> Objects.equals(o.getMenuType(),0)).count(); + return menuSize <= 0; } @Override @@ -466,8 +472,8 @@ public class LoginServiceImpl implements ILoginService { RSA rsa = new RSA(); String privateKeyBase64 = rsa.getPrivateKeyBase64(); String publicKeyBase64 = rsa.getPublicKeyBase64(); - //存到redis key为公钥 value为私钥 - redisUtil.set(publicKeyBase64, privateKeyBase64, 180L); + //存到redis key为公钥 value为私钥,3分钟 + redisUtil.set(publicKeyBase64, privateKeyBase64, 10L); Results result = new Results<>(); result.setResult(publicKeyBase64); return result;