From 15de42058953093fba15e77130f0cb26404ee17a Mon Sep 17 00:00:00 2001 From: ajaxfan <909938737@qq.com> Date: Wed, 24 Mar 2021 17:03:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E4=BA=86common=E5=8C=85?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0cookie=E8=BF=9E=E6=8E=A5=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdk/config/SDKAutoConfiguration.java | 4 +- .../sdk/convertor/ModelConvertor.java | 1 + .../sdk/service/DocumentCenterService.java | 10 +-- .../security/starter/common/Constants.java | 1 + .../mall/ebtp/common/config/FeignConfig.java | 71 ++++++++++--------- 5 files changed, 46 insertions(+), 41 deletions(-) diff --git a/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/config/SDKAutoConfiguration.java b/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/config/SDKAutoConfiguration.java index 641809c..52b6ee7 100644 --- a/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/config/SDKAutoConfiguration.java +++ b/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/config/SDKAutoConfiguration.java @@ -14,7 +14,7 @@ import com.chinaunicom.ebtp.mall.cloud.attachment.sdk.convertor.ModelConvertor; @ComponentScan(basePackages = "com.chinaunicom.ebtp.mall.cloud.attachment.sdk") @PropertySource("classpath:attachment-sdk-cofiguration.properties") public class SDKAutoConfiguration { - + /** * @return 数据模型转换器 */ @@ -22,7 +22,7 @@ public class SDKAutoConfiguration { public ModelConvertor modelConvertor() { return new ModelConvertor(); } - + /** * @return 文件转换器 */ diff --git a/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/convertor/ModelConvertor.java b/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/convertor/ModelConvertor.java index 4852a04..c22a4d8 100644 --- a/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/convertor/ModelConvertor.java +++ b/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/convertor/ModelConvertor.java @@ -41,6 +41,7 @@ public class ModelConvertor { * @return */ public Optional toAttachmentEntity(String json) { + log.debug("toAttachmentEntity: {}", json); return Optional.ofNullable(json).map(content -> { AttachmentEntity entity = null; diff --git a/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/service/DocumentCenterService.java b/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/service/DocumentCenterService.java index 7aad655..89a242d 100644 --- a/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/service/DocumentCenterService.java +++ b/mall-ebtp-cloud-attachment-sdk/src/main/java/com/chinaunicom/ebtp/mall/cloud/attachment/sdk/service/DocumentCenterService.java @@ -18,8 +18,8 @@ import com.chinaunicom.ebtp.mall.cloud.attachment.sdk.fallback.DocumentCenterSer * * @author Ajaxfan */ -@FeignClient(name = "DocumentCenterService", url = "${document.center.ip-address}", fallback = DocumentCenterServiceFallback.class) -//@FeignClient(value = "core-service-document-center", fallback = DocumentCenterServiceFallback.class) +//@FeignClient(name = "DocumentCenterService", url = "${document.center.ip-address}", fallback = DocumentCenterServiceFallback.class) +@FeignClient(name = "${document.center.service.id}", fallback = DocumentCenterServiceFallback.class) public interface DocumentCenterService { /** @@ -28,7 +28,7 @@ public interface DocumentCenterService { * @param fileId * @return */ - @RequestMapping(method = RequestMethod.POST, value = "/v1.0/files/downloadFileAllStream") + @RequestMapping(method = RequestMethod.POST, value = "v1.0/files/downloadFileAllStream") String getObjectDetail(@RequestParam("fileId") String fileId); /** @@ -37,7 +37,7 @@ public interface DocumentCenterService { * @param bids * @return */ - @RequestMapping(method = RequestMethod.POST, value = "/v1.0/files/queryReturn") + @RequestMapping(method = RequestMethod.POST, value = "v1.0/files/queryReturn") String fetchDetails(@RequestBody List bids); /** @@ -55,7 +55,7 @@ public interface DocumentCenterService { * @param fileId * @return */ - @RequestMapping(method = RequestMethod.POST, value = "/v1.0/files/disk") + @RequestMapping(method = RequestMethod.POST, value = "v1.0/files/disk") String deleteByOid(@RequestParam("fileId") String fileId); } diff --git a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/common/Constants.java b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/common/Constants.java index 5945455..4621c1f 100644 --- a/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/common/Constants.java +++ b/mall-ebtp-cloud-security-starter/src/main/java/com/chinaunicom/mall/ebtp/cloud/security/starter/common/Constants.java @@ -8,5 +8,6 @@ public interface Constants { public static final String AUTHORIZATION_HEADER = "Authorization"; public static final String TOKEN_PREFIX = "Bearer "; public static final String CURRENT_ROLE_CODE = "currentRoleCode"; + public static final String COOKIE_TOKEN_CODE = "mall3_token"; } diff --git a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java index 64128ac..888fba5 100644 --- a/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java +++ b/uboot-common/src/main/java/com/chinaunicom/mall/ebtp/common/config/FeignConfig.java @@ -1,18 +1,21 @@ package com.chinaunicom.mall.ebtp.common.config; -import feign.RequestInterceptor; -import feign.RequestTemplate; +import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.AUTHORIZATION_HEADER; +import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.CURRENT_ROLE_CODE; +import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.TOKEN_PREFIX; +import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.COOKIE_TOKEN_CODE; + +import java.util.Optional; +import java.util.stream.Stream; + import org.apache.commons.lang3.RegExUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; -import javax.servlet.http.Cookie; -import java.util.Arrays; -import java.util.Optional; - -import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.*; +import feign.RequestInterceptor; +import feign.RequestTemplate; /** * 通过拦截器来为header注入token @@ -20,36 +23,36 @@ import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants. @Configuration public class FeignConfig implements RequestInterceptor { - /** - * @param template - */ - @Override - public void apply(RequestTemplate template) { - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); + /** + * @param template + */ + @Override + public void apply(RequestTemplate template) { + ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (null != attributes) { - final String header = attributes.getRequest().getHeader(AUTHORIZATION_HEADER);// 提取request头信息 + if (null != attributes) { + final String header = attributes.getRequest().getHeader(AUTHORIZATION_HEADER);// 提取request头信息 - // 检查请求头是否包含 Bearer 前缀 - if (StringUtils.startsWith(header, TOKEN_PREFIX)) { - String authToken = RegExUtils.replaceAll(header, TOKEN_PREFIX, "");// 提取 token 信息 + // 检查请求头是否包含 Bearer 前缀 + if (StringUtils.startsWith(header, TOKEN_PREFIX)) { + String authToken = RegExUtils.replaceAll(header, TOKEN_PREFIX, "");// 提取 token 信息 - template.header(AUTHORIZATION_HEADER, String.format("%s%s", TOKEN_PREFIX, authToken)); - } else { - //检查cookie - Optional optional = Arrays.stream(attributes.getRequest().getCookies()) - .filter(cookie -> StringUtils.equals(cookie.getName(), "mall3_token")) - .findAny(); + template.header(AUTHORIZATION_HEADER, String.format("%s%s", TOKEN_PREFIX, authToken)); + } else {// 检查cookie + Optional.ofNullable(attributes.getRequest().getCookies()).ifPresent(cookies -> { + Stream.of(cookies).filter(item -> StringUtils.equals(item.getName(), COOKIE_TOKEN_CODE)).findFirst() + .ifPresent(token -> { + template.header(AUTHORIZATION_HEADER, String.format("%s%s", TOKEN_PREFIX, token)); + }); + }); + } + final String currentRoleCode = attributes.getRequest().getHeader(CURRENT_ROLE_CODE);// 提取request头信息 - optional.ifPresent(o -> template.header(AUTHORIZATION_HEADER, String.format("%s%s", TOKEN_PREFIX, o))); - } - final String currentRoleCode = attributes.getRequest().getHeader(CURRENT_ROLE_CODE);// 提取request头信息 - - // 检查请求头是否包含 currentRoleCode - if (StringUtils.isNotEmpty(currentRoleCode)) { - template.header(CURRENT_ROLE_CODE, currentRoleCode); - } - } - } + // 检查请求头是否包含 currentRoleCode + if (StringUtils.isNotEmpty(currentRoleCode)) { + template.header(CURRENT_ROLE_CODE, currentRoleCode); + } + } + } }