From 0a5adf455fcb421e9399dad5a9a2f0d18d80e625 Mon Sep 17 00:00:00 2001 From: hxh Date: Sat, 13 Jul 2024 15:54:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=B9=B3=E5=8F=B0?= =?UTF-8?q?=E7=99=BB=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysLoginController.java | 12 +++++++++++- .../com/kms/web/utils/WaterRequestUtil.java | 19 +++++++++++++++++++ .../web/service/SysPermissionService.java | 16 ++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java b/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java index f1232b8f..8ee2ebb7 100644 --- a/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java +++ b/shuili-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java @@ -125,7 +125,16 @@ public class SysLoginController extends BaseController { @PostMapping("/logout") @SaCheckLogin public AjaxResult logout() { - + SysUser sysUser = UserUtils.getUser(); + if (sysUser != null) { + String token = permissionService.getPortalToken(sysUser.getId()); + if (StringUtils.isNotBlank(token)) { + try { + waterRequestUtil.logout(token); + } catch (Exception ignore) { + } + } + } // 登录保存缓存 StpUtil.logout(); //删除缓存 @@ -267,6 +276,7 @@ public class SysLoginController extends BaseController { throw new BaseException("账号异常,登陆失败"); } permissionService.setUserMenuFromPortal(simpleUser.getId(), menus); + permissionService.setPortalToken(simpleUser.getId(), token); StpUtil.login(simpleUser.getId()); StpUtil.getSession().set("jianwei-user", simpleUser); String accessToken = StpUtil.getTokenValue(); diff --git a/shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java b/shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java index c6d1954a..c0258351 100644 --- a/shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java +++ b/shuili-admin/src/main/java/com/kms/web/utils/WaterRequestUtil.java @@ -39,6 +39,8 @@ public class WaterRequestUtil { public String singOnAppsecret; @Value("${water.singOnUrl:}") public String singOnUrl; + @Value("${water.logoutUrl:}") + public String logoutUrl; //验证用户登录 @Value("${water.userUrl:}") @@ -194,6 +196,23 @@ public class WaterRequestUtil { return JSONObject.parseObject(body, WaterResult.class); } + public WaterResultV2 logout(String authorization) { + long startTime = System.currentTimeMillis(); + log.info("--------请求统一门户用户注销登陆,请求地址为:{}", logoutUrl); + HttpRequest get = createGet(logoutUrl, authUserServiceId, authUserAppsecret); + String body; + try (HttpResponse response = get.header("Authorization", authorization) + .execute()) { + body = response.body(); + } + long endTime = System.currentTimeMillis(); + log.info("--------请求统一门户用户注销登陆,耗时{}毫秒,返回结果为:{}", endTime - startTime, body); + WaterResultV2 waterResult = JSON.parseObject(body, new TypeReference>() { + }); + isSuccess(waterResult); + return waterResult; + } + /** * 验证用户登录 * diff --git a/shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java b/shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java index 166bcc14..6b9b7fad 100644 --- a/shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java +++ b/shuili-system/src/main/java/com/kms/framework/web/service/SysPermissionService.java @@ -100,6 +100,14 @@ public class SysPermissionService { } } + public String getPortalToken(String userId) { + Object cache = redisCache.getCacheObject(tokenKey(userId)); + if (cache != null) { + return StringUtils.cast(cache); + } else { + return null; + } + } public void setUserPermissionFromPortal(String userId, List perms) { if (CollectionUtils.isEmpty(perms)) { @@ -115,6 +123,10 @@ public class SysPermissionService { redisCache.setCacheObject(menusKey(userId), menus, 7, TimeUnit.DAYS); } + public void setPortalToken(String userId, String token) { + redisCache.setCacheObject(tokenKey(userId), token, 7, TimeUnit.DAYS); + } + @Data @AllArgsConstructor @NoArgsConstructor @@ -127,6 +139,10 @@ public class SysPermissionService { } + private String tokenKey(String userId) { + return "portal_token:" + userId; + } + private String permsKey(String userId) { return "user_perms:" + userId; }