mirror of
https://gitee.com/log4j/pig.git
synced 2024-12-22 12:48:58 +08:00
🐛 Fixing a bug. close #I4DENS 开放平台退出报错 健壮性处理
This commit is contained in:
parent
bcf17b758f
commit
c6e0ae50c9
@ -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;
|
||||
|
@ -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<HttpServletRequest> 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
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user