From f53755d3756e72d7fd5421b56502b5439764a886 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期三, 19 七月 2023 09:28:40 +0800 Subject: [PATCH] 修改登录验证增加app用户过期token时限 --- ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | 38 ++++++++++++++++++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java | 2 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java | 4 - ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java | 13 ++++++ ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java | 20 ++++++++-- ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java | 14 +++++++ 6 files changed, 82 insertions(+), 9 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java index 736c164..780665c 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java @@ -54,7 +54,7 @@ AjaxResult ajax = AjaxResult.success(); // 鐢熸垚浠ょ墝 String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), - loginBody.getUuid()); + loginBody.getUuid(),loginBody.getApp()); ajax.put(Constants.TOKEN, token); return ajax; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java index 4a939ff..c58fd3e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java @@ -44,7 +44,6 @@ * * @author ruoyi */ -@Api(tags = "鐢ㄦ埛淇℃伅") @RestController @RequestMapping("/system/user") public class SysUserController extends BaseController @@ -64,7 +63,7 @@ /** * 鑾峰彇鐢ㄦ埛鍒楄〃 */ - @ApiOperation("鑾峰彇鐢ㄦ埛鍒楄〃") + @ApiOperationSupport(includeParameters={"user.userId"}) @PreAuthorize("@ss.hasPermi('system:user:list')") @GetMapping("/list") @@ -186,7 +185,6 @@ /** * 鍒犻櫎鐢ㄦ埛 */ - @ApiOperation(value = "鍒犻櫎鐢ㄦ埛") @PreAuthorize("@ss.hasPermi('system:user:remove')") @Log(title = "鐢ㄦ埛绠$悊", businessType = BusinessType.DELETE) @DeleteMapping("/{userIds}") diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java index b5bc8c8..3d6e809 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java @@ -27,6 +27,20 @@ */ private String uuid; + /** + * 鏄惁APP鐢ㄦ埛 + */ + private Boolean isApp; + + + public Boolean getApp() { + return isApp; + } + + public void setApp(Boolean app) { + isApp = app; + } + public String getUsername() { return username; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java index 2fefaa0..c2a07d4 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginUser.java @@ -71,6 +71,19 @@ */ private SysUser user; + /** + * 鏄惁app鐢ㄦ埛 + */ + private Boolean isApp; + + public Boolean getIsApp() { + return isApp; + } + + public void setIsApp(Boolean isApp) { + this.isApp = isApp; + } + public String getUserId() { return userId; diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index 78d2213..cd67a89 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -95,7 +95,43 @@ getRongCloudToken(loginUser); return token; } - + public String login(String username, String password, String code, String uuid,Boolean isApp) { + boolean captchaEnabled = configService.selectCaptchaEnabled(); + // 楠岃瘉鐮佸紑鍏� + if (captchaEnabled) { + validateCaptcha(username, code, uuid); + } + // 鐢ㄦ埛楠岃瘉 + Authentication authentication = null; + try { + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); + AuthenticationContextHolder.setContext(authenticationToken); + // 璇ユ柟娉曚細鍘昏皟鐢║serDetailsServiceImpl.loadUserByUsername + authentication = authenticationManager.authenticate(authenticationToken); + } catch (Exception e) { + if (e instanceof BadCredentialsException) { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + throw new UserPasswordNotMatchException(); + } else { + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); + throw new ServiceException(e.getMessage()); + } + } finally { + AuthenticationContextHolder.clearContext(); + } + AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); + LoginUser loginUser = (LoginUser) authentication.getPrincipal(); + recordLoginInfo(loginUser.getUserId()); + // 鐢熸垚token + if(StringUtils.isNotNull(isApp)) + { + loginUser.setIsApp(isApp); + } + String token = tokenService.createToken(loginUser); + //鑾峰彇铻嶄簯token + getRongCloudToken(loginUser); + return token; + } /** * 鏍¢獙楠岃瘉鐮� * diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java index 3d41241..f4bfa37 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java @@ -142,10 +142,22 @@ public void refreshToken(LoginUser loginUser) { loginUser.setLoginTime(System.currentTimeMillis()); - loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); - // 鏍规嵁uuid灏唋oginUser缂撳瓨 - String userKey = getTokenKey(loginUser.getToken()); - redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); + if(StringUtils.isNull(loginUser.getIsApp())) + { + + loginUser.setExpireTime(loginUser.getLoginTime() + expireTime * MILLIS_MINUTE); + // 鏍规嵁uuid灏唋oginUser缂撳瓨 + String userKey = getTokenKey(loginUser.getToken()); + redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); + } + else + { + loginUser.setExpireTime(loginUser.getLoginTime() + 365*24*60 * MILLIS_MINUTE); + // 鏍规嵁uuid灏唋oginUser缂撳瓨 + String userKey = getTokenKey(loginUser.getToken()); + redisCache.setCacheObject(userKey, loginUser, 365*24*60, TimeUnit.MINUTES); + } + } /** -- Gitblit v1.9.3