diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxFeignTenantConfiguration.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantConfiguration.java similarity index 80% rename from pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxFeignTenantConfiguration.java rename to pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantConfiguration.java index d5d6dbde8..49c26dac5 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxFeignTenantConfiguration.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/PigxTenantConfiguration.java @@ -20,16 +20,23 @@ package com.pig4cloud.pigx.common.data.tenant; import feign.RequestInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.client.ClientHttpRequestInterceptor; /** * @author lengleng - * @date 2018/9/14 - * feign 租户信息拦截 + * @date 2020/4/29 + *
+ * 租户信息拦截 */ @Configuration -public class PigxFeignTenantConfiguration { +public class PigxTenantConfiguration { @Bean public RequestInterceptor pigxFeignTenantInterceptor() { return new PigxFeignTenantInterceptor(); } + + @Bean + public ClientHttpRequestInterceptor pigxTenantRequestInterceptor() { + return new TenantRequestInterceptor(); + } } diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/TenantRequestInterceptor.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/TenantRequestInterceptor.java new file mode 100644 index 000000000..daf093793 --- /dev/null +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/tenant/TenantRequestInterceptor.java @@ -0,0 +1,23 @@ +package com.pig4cloud.pigx.common.data.tenant; + +import com.pig4cloud.pigx.common.core.constant.CommonConstants; +import org.springframework.http.HttpRequest; +import org.springframework.http.client.ClientHttpRequestExecution; +import org.springframework.http.client.ClientHttpRequestInterceptor; +import org.springframework.http.client.ClientHttpResponse; + +import java.io.IOException; + +/** + * @author lengleng + * @date 2020/4/29 + *
+ * 传递 RestTemplate 请求的租户ID
+ */
+public class TenantRequestInterceptor implements ClientHttpRequestInterceptor {
+ @Override
+ public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
+ request.getHeaders().set(CommonConstants.TENANT_ID, String.valueOf(TenantContextHolder.getTenantId()));
+ return execution.execute(request, body);
+ }
+}
diff --git a/pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories b/pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories
index fd3942d5c..92bd2f9e4 100644
--- a/pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories
+++ b/pigx-common/pigx-common-data/src/main/resources/META-INF/spring.factories
@@ -4,6 +4,6 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.pig4cloud.pigx.common.data.cache.RedisCacheAutoConfiguration,\
com.pig4cloud.pigx.common.data.tenant.PigxTenantConfigProperties,\
com.pig4cloud.pigx.common.data.tenant.TenantContextHolderFilter,\
- com.pig4cloud.pigx.common.data.tenant.PigxFeignTenantConfiguration,\
+ com.pig4cloud.pigx.common.data.tenant.PigxTenantConfiguration,\
com.pig4cloud.pigx.common.data.mybatis.MybatisPlusConfiguration,\
com.pig4cloud.pigx.common.data.resolver.WebMvcConfig
\ No newline at end of file
diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java
index 5bc39d1be..22777f4fc 100644
--- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java
+++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/component/PigxResourceServerAutoConfiguration.java
@@ -17,43 +17,44 @@
package com.pig4cloud.pigx.common.security.component;
+import com.pig4cloud.pigx.common.security.handler.RestResponseErrorHandler;
+import org.springframework.beans.BeansException;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Primary;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.MediaType;
-import org.springframework.http.client.ClientHttpResponse;
-import org.springframework.web.client.DefaultResponseErrorHandler;
+import org.springframework.http.client.ClientHttpRequestInterceptor;
import org.springframework.web.client.RestTemplate;
-import java.io.IOException;
-import java.util.Collections;
+import java.util.ArrayList;
+import java.util.Map;
/**
* @author lengleng
* @date 2018/11/10
*/
@ComponentScan("com.pig4cloud.pigx.common.security")
-public class PigxResourceServerAutoConfiguration {
+public class PigxResourceServerAutoConfiguration implements ApplicationContextAware {
+ private ApplicationContext applicationContext;
+
@Bean
@Primary
@LoadBalanced
public RestTemplate lbRestTemplate() {
+ // 获取上下文配置的ClientHttpRequestInterceptor 实现
+ Map
+ * 重写默认的 响应失败处理器,400 不作为异常
+ */
+public class RestResponseErrorHandler extends DefaultResponseErrorHandler {
+ @Override
+ public void handleError(ClientHttpResponse response) throws IOException {
+ if (response.getRawStatusCode() != HttpStatus.BAD_REQUEST.value()) {
+ super.handleError(response);
+ }
+ }
+}
diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/AccpetRequestInterceptor.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/AccpetRequestInterceptor.java
new file mode 100644
index 000000000..340cb4cac
--- /dev/null
+++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/AccpetRequestInterceptor.java
@@ -0,0 +1,26 @@
+package com.pig4cloud.pigx.common.security.interceptor;
+
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpRequest;
+import org.springframework.http.MediaType;
+import org.springframework.http.client.ClientHttpRequestExecution;
+import org.springframework.http.client.ClientHttpRequestInterceptor;
+import org.springframework.http.client.ClientHttpResponse;
+import org.springframework.stereotype.Component;
+
+import java.io.IOException;
+
+/**
+ * @author lengleng
+ * @date 2020/4/29
+ *
+ * 传递accpet 请求头,避免 请求返回 XML
+ */
+@Component
+public class AccpetRequestInterceptor implements ClientHttpRequestInterceptor {
+ @Override
+ public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
+ request.getHeaders().set(HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE);
+ return execution.execute(request, body);
+ }
+}
diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignClientInterceptor.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/PigxFeignClientInterceptor.java
similarity index 98%
rename from pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignClientInterceptor.java
rename to pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/PigxFeignClientInterceptor.java
index 1aad67fc6..8b84ebfd6 100644
--- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignClientInterceptor.java
+++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/PigxFeignClientInterceptor.java
@@ -15,7 +15,7 @@
* Author: lengleng (wangiegie@gmail.com)
*/
-package com.pig4cloud.pigx.common.security.feign;
+package com.pig4cloud.pigx.common.security.interceptor;
import cn.hutool.core.collection.CollUtil;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
diff --git a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignConfiguration.java b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/PigxFeignConfiguration.java
similarity index 97%
rename from pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignConfiguration.java
rename to pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/PigxFeignConfiguration.java
index 55069b710..4a225f17d 100644
--- a/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/feign/PigxFeignConfiguration.java
+++ b/pigx-common/pigx-common-security/src/main/java/com/pig4cloud/pigx/common/security/interceptor/PigxFeignConfiguration.java
@@ -15,7 +15,7 @@
* Author: lengleng (wangiegie@gmail.com)
*/
-package com.pig4cloud.pigx.common.security.feign;
+package com.pig4cloud.pigx.common.security.interceptor;
import feign.Feign;
import feign.RequestInterceptor;