From fc5d43e590ac5453f1e1f96fcf84f558f383ca40 Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期五, 21 三月 2025 14:18:21 +0800 Subject: [PATCH] feat(social): 添加 Keycloak单点登录功能 --- eims/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-) diff --git a/eims/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java b/eims/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java index c7ad917..d99a2fd 100644 --- a/eims/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java +++ b/eims/ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java @@ -6,6 +6,8 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.lang.Opt; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; import com.baomidou.lock.annotation.Lock4j; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -48,6 +50,12 @@ @Slf4j @Service public class SysLoginService { + + @Value("${justauth.type.keycloak.server-url}") + private String keycloakServerUrl; + + @Value("${justauth.type.keycloak.realm}") + private String keycloakRealm; @Value("${user.password.maxRetryCount}") private Integer maxRetryCount; @@ -116,6 +124,27 @@ TenantHelper.clearDynamic(); } recordLogininfor(loginUser.getTenantId(), loginUser.getUsername(), Constants.LOGOUT, MessageUtils.message("user.logout.success")); + + // 鏂板Keycloak鐧诲嚭閫昏緫 + + Long userId = loginUser.getUserId(); + + SysSocialVo social = sysSocialService.selectByUserId(userId); + if (social == null) { + return; + } + + String logoutUrl = keycloakServerUrl + "/realms/" + keycloakRealm + "/protocol/openid-connect/logout"; + HttpRequest request = HttpRequest.get(logoutUrl) + .form("refresh_token", social.getRefreshToken()) + .form("id_token_hint", social.getIdToken()); + + + HttpResponse response = request.execute(); + if (response.isOk()) { + System.out.println("1234"); + } + } catch (NotLoginException ignored) { } finally { try { -- Gitblit v1.9.3