From 9d960ed0058f9087f49e9741a9af06c3f9116eb0 Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期六, 19 四月 2025 11:23:02 +0800 Subject: [PATCH] feat(auth): 添加 Keycloak 认证支持 --- zhitan-framework/src/main/java/com/zhitan/framework/security/handle/LogoutSuccessHandlerImpl.java | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-) diff --git a/zhitan-framework/src/main/java/com/zhitan/framework/security/handle/LogoutSuccessHandlerImpl.java b/zhitan-framework/src/main/java/com/zhitan/framework/security/handle/LogoutSuccessHandlerImpl.java index 4064d5c..ad2f9f3 100644 --- a/zhitan-framework/src/main/java/com/zhitan/framework/security/handle/LogoutSuccessHandlerImpl.java +++ b/zhitan-framework/src/main/java/com/zhitan/framework/security/handle/LogoutSuccessHandlerImpl.java @@ -5,6 +5,12 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.annotation.Resource; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import com.zhitan.system.domain.SysSocial; +import com.zhitan.system.service.ISysSocialService; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Configuration; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; @@ -30,6 +36,16 @@ @Resource private TokenService tokenService; + @Value("${keycloak.server-url}") + private String keycloakServerUrl; + + @Value("${keycloak.realm}") + private String keycloakRealm; + + + @Resource + private ISysSocialService sysSocialService; + /** * 閫�鍑哄鐞� * @@ -47,6 +63,21 @@ tokenService.delLoginUser(loginUser.getToken()); // 璁板綍鐢ㄦ埛閫�鍑烘棩蹇� AsyncManager.me().execute(AsyncFactory.recordLoginInfo(userName, Constants.LOGOUT, MessageUtils.message("user.logout.success"))); + SysSocial social = sysSocialService.selectByUserId(loginUser.getUserId()); + if (social == null) { + return; + } + + String logoutUrl = keycloakServerUrl + "/realms/" + keycloakRealm + "/protocol/openid-connect/logout"; + HttpRequest req = HttpRequest.get(logoutUrl) + .form("refresh_token", social.getRefreshToken()) + .form("id_token_hint", social.getIdToken()); + + + HttpResponse rep = req.execute(); + if (rep.isOk()) { + System.out.println("1234"); + } } ServletUtils.renderString(response, JSON.toJSONString(AjaxResult.success(MessageUtils.message("user.logout.success")))); } -- Gitblit v1.9.3