From 3b9568bb46951d0e45ff859a7ffac8ea3c5d062e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B7=E5=86=B7?= Date: Mon, 6 Apr 2020 11:34:20 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20Introducing=20new=20features.=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=89=8D=E5=90=8E=E7=AB=AF=20sso=20=E7=9A=84?= =?UTF-8?q?=E9=80=80=E5=87=BA=EF=BC=8C=E5=9B=9E=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pigx/auth/config/WebSecurityConfigurer.java | 9 +++++++++ .../handler/PigxAuthenticationFailureEventHandler.java | 8 ++++++-- .../handler/PigxAuthenticationSuccessEventHandler.java | 6 +++++- .../com/pig4cloud/pigx/common/core/util/WebUtils.java | 4 ++-- .../pigx/gateway/filter/ValidateCodeGatewayFilter.java | 4 ++-- 5 files changed, 24 insertions(+), 7 deletions(-) diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java index bf218dd7e..f104bf9dc 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/config/WebSecurityConfigurer.java @@ -27,6 +27,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.annotation.Order; +import org.springframework.http.HttpHeaders; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; @@ -54,6 +55,14 @@ public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter { .loginProcessingUrl("/token/form") .failureHandler(authenticationFailureHandler()) .and() + .logout() + .logoutSuccessHandler((request, response, authentication) -> { + String referer = request.getHeader(HttpHeaders.REFERER); + response.sendRedirect(referer); + }) + .deleteCookies("JSESSIONID") + .invalidateHttpSession(true) + .and() .authorizeRequests() .antMatchers( "/token/**", diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationFailureEventHandler.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationFailureEventHandler.java index b13cfb52c..290d72d6c 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationFailureEventHandler.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationFailureEventHandler.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.auth.handler; +import cn.hutool.core.util.StrUtil; import com.pig4cloud.pigx.admin.api.entity.SysLog; import com.pig4cloud.pigx.admin.api.feign.RemoteLogService; import com.pig4cloud.pigx.common.core.constant.CommonConstants; @@ -64,9 +65,12 @@ public class PigxAuthenticationFailureEventHandler implements AuthenticationFail sysLog.setTitle(username + "用户登录"); sysLog.setType(CommonConstants.STATUS_LOCK); sysLog.setParams(username); - String header = request.getHeader(HttpHeaders.AUTHORIZATION); - sysLog.setServiceId(WebUtils.getClientId(header)[0]); sysLog.setException(authenticationException.getLocalizedMessage()); + String header = request.getHeader(HttpHeaders.AUTHORIZATION); + if (StrUtil.isNotBlank(header)) { + sysLog.setServiceId(WebUtils.getClientId(header)); + } + logService.saveLog(sysLog, SecurityConstants.FROM_IN); log.info("用户:{} 登录失败,异常:{}", username, authenticationException.getLocalizedMessage()); diff --git a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java index d4b4823ab..c8daca597 100644 --- a/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java +++ b/pigx-auth/src/main/java/com/pig4cloud/pigx/auth/handler/PigxAuthenticationSuccessEventHandler.java @@ -17,6 +17,7 @@ package com.pig4cloud.pigx.auth.handler; +import cn.hutool.core.util.StrUtil; import com.pig4cloud.pigx.admin.api.entity.SysLog; import com.pig4cloud.pigx.admin.api.feign.RemoteLogService; import com.pig4cloud.pigx.common.core.constant.SecurityConstants; @@ -60,7 +61,10 @@ public class PigxAuthenticationSuccessEventHandler implements AuthenticationSucc sysLog.setTitle(username + "用户登录"); sysLog.setParams(username); String header = request.getHeader(HttpHeaders.AUTHORIZATION); - sysLog.setServiceId(WebUtils.getClientId(header)[0]); + if (StrUtil.isNotBlank(header)) { + sysLog.setServiceId(WebUtils.getClientId(header)); + } + logService.saveLog(sysLog, SecurityConstants.FROM_IN); log.info("用户:{} 登录成功", username); } diff --git a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/util/WebUtils.java b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/util/WebUtils.java index 94377c893..6e2bf43a0 100644 --- a/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/util/WebUtils.java +++ b/pigx-common/pigx-common-core/src/main/java/com/pig4cloud/pigx/common/core/util/WebUtils.java @@ -210,7 +210,7 @@ public class WebUtils extends org.springframework.web.util.WebUtils { * @return */ @SneakyThrows - public String[] getClientId(String header) { + public String getClientId(String header) { if (header == null || !header.startsWith(BASIC_)) { throw new CheckedException("请求头中client信息为空"); @@ -231,7 +231,7 @@ public class WebUtils extends org.springframework.web.util.WebUtils { if (delim == -1) { throw new CheckedException("Invalid basic authentication token"); } - return new String[]{token.substring(0, delim), token.substring(delim + 1)}; + return token.substring(0, delim); } } diff --git a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java index 89d8e1f0e..020b63618 100644 --- a/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java +++ b/pigx-gateway/src/main/java/com/pig4cloud/pigx/gateway/filter/ValidateCodeGatewayFilter.java @@ -76,8 +76,8 @@ public class ValidateCodeGatewayFilter extends AbstractGatewayFilterFactory { // 终端设置不校验, 直接向下执行 try { String header = request.getHeaders().getFirst(HttpHeaders.AUTHORIZATION); - String[] clientInfos = WebUtils.getClientId(header); - if (filterIgnorePropertiesConfig.getClients().contains(clientInfos[0])) { + String clientId = WebUtils.getClientId(header); + if (filterIgnorePropertiesConfig.getClients().contains(clientId)) { return chain.filter(exchange); }