diff --git a/pig-auth/src/main/java/com/pig4cloud/pig/auth/handler/PigLogoutSuccessEventHandler.java b/pig-auth/src/main/java/com/pig4cloud/pig/auth/handler/PigLogoutSuccessEventHandler.java index 6f1c1abe9a77968b3e77ded89f7b9ed5c40914b5..0e01fb6fd9425dfe6de27d4e5ea16e4b0490d454 100644 --- a/pig-auth/src/main/java/com/pig4cloud/pig/auth/handler/PigLogoutSuccessEventHandler.java +++ b/pig-auth/src/main/java/com/pig4cloud/pig/auth/handler/PigLogoutSuccessEventHandler.java @@ -18,14 +18,15 @@ package com.pig4cloud.pig.auth.handler; import com.pig4cloud.pig.admin.api.entity.SysLog; import com.pig4cloud.pig.common.core.util.SpringContextHolder; +import com.pig4cloud.pig.common.core.util.WebUtils; import com.pig4cloud.pig.common.log.event.SysLogEvent; import com.pig4cloud.pig.common.log.util.SysLogUtils; import com.pig4cloud.pig.common.security.handler.AbstractLogoutSuccessEventHandler; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpHeaders; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.oauth2.provider.OAuth2Authentication; -import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails; import org.springframework.stereotype.Component; /** @@ -46,14 +47,17 @@ public class PigLogoutSuccessEventHandler extends AbstractLogoutSuccessEventHand public void handle(Authentication authentication) { log.info("用户:{} 退出成功", authentication.getPrincipal()); SecurityContextHolder.getContext().setAuthentication(authentication); + SysLog logVo = SysLogUtils.getSysLog(); logVo.setTitle("退出成功"); - OAuth2AuthenticationDetails authenticationDetails = (OAuth2AuthenticationDetails) authentication.getDetails(); - logVo.setParams(authenticationDetails == null ? null : authenticationDetails.getTokenValue()); // 发送异步日志事件 Long startTime = System.currentTimeMillis(); Long endTime = System.currentTimeMillis(); logVo.setTime(endTime - startTime); + + // 设置对应的token + WebUtils.getRequest().ifPresent(request -> logVo.setParams(request.getHeader(HttpHeaders.AUTHORIZATION))); + // 这边设置ServiceId if (authentication instanceof OAuth2Authentication) { OAuth2Authentication auth2Authentication = (OAuth2Authentication) authentication; diff --git a/pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/WebUtils.java b/pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/WebUtils.java index 892756c54f8a7f0a9e1306afbcfe4a404693bfbf..2c9986e9324383375e9a299091cad465e4e8efaf 100755 --- a/pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/WebUtils.java +++ b/pig-common/pig-common-core/src/main/java/com/pig4cloud/pig/common/core/util/WebUtils.java @@ -25,7 +25,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.server.reactive.ServerHttpRequest; -import org.springframework.util.Assert; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -39,6 +38,7 @@ import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; +import java.util.Optional; /** * Miscellaneous utilities for web applications. @@ -69,9 +69,10 @@ public class WebUtils extends org.springframework.web.util.WebUtils { * @return cookie value */ public String getCookieVal(String name) { - HttpServletRequest request = WebUtils.getRequest(); - Assert.notNull(request, "request from RequestContextHolder is null"); - return getCookieVal(request, name); + if (WebUtils.getRequest().isPresent()) { + return getCookieVal(WebUtils.getRequest().get(), name); + } + return null; } /** @@ -113,8 +114,9 @@ public class WebUtils extends org.springframework.web.util.WebUtils { * 获取 HttpServletRequest * @return {HttpServletRequest} */ - public HttpServletRequest getRequest() { - return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + public Optional getRequest() { + return Optional + .ofNullable(((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest()); } /** @@ -158,15 +160,16 @@ public class WebUtils extends org.springframework.web.util.WebUtils { @SneakyThrows public String getClientId(ServerHttpRequest request) { String header = request.getHeaders().getFirst(HttpHeaders.AUTHORIZATION); - return splitClient(header)[0]; } @SneakyThrows public String getClientId(HttpServletRequest request) { - String header = WebUtils.getRequest().getHeader("Authorization"); - - return splitClient(header)[0]; + if (WebUtils.getRequest().isPresent()) { + String header = WebUtils.getRequest().get().getHeader(HttpHeaders.AUTHORIZATION); + return splitClient(header)[0]; + } + return null; } @NotNull diff --git a/pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/handler/SsoLogoutSuccessHandler.java b/pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/handler/SsoLogoutSuccessHandler.java index c4a7cb2b344cea223c6fb3ca22d7b17a71b6f0c9..af235f7a88fa8e369c1bcf650d271311b88d8e6d 100644 --- a/pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/handler/SsoLogoutSuccessHandler.java +++ b/pig-common/pig-common-security/src/main/java/com/pig4cloud/pig/common/security/handler/SsoLogoutSuccessHandler.java @@ -22,6 +22,9 @@ public class SsoLogoutSuccessHandler implements LogoutSuccessHandler { @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException { + if (response == null) { + return; + } // 获取请求参数中是否包含 回调地址 String redirectUrl = request.getParameter(REDIRECT_URL);