From 4c583f5ad2416caaabfe3a4c733538ddada28fd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E5=BA=86=E5=90=89?= <51312040@qq.com> Date: Wed, 24 Mar 2021 14:31:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0cookie=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mall/ebtp/common/config/FeignConfig.java | 60 +++++++++++-------- 1 file changed, 34 insertions(+), 26 deletions(-) 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 18ddf8f..64128ac 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,17 +1,18 @@ package com.chinaunicom.mall.ebtp.common.config; -import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.AUTHORIZATION_HEADER; -import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.TOKEN_PREFIX; -import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.CURRENT_ROLE_CODE; - +import feign.RequestInterceptor; +import feign.RequestTemplate; 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 feign.RequestInterceptor; -import feign.RequestTemplate; +import javax.servlet.http.Cookie; +import java.util.Arrays; +import java.util.Optional; + +import static com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.*; /** * 通过拦截器来为header注入token @@ -19,29 +20,36 @@ import feign.RequestTemplate; @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)); - } - final String currentRoleCode = attributes.getRequest().getHeader(CURRENT_ROLE_CODE);// 提取request头信息 + 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(); - // 检查请求头是否包含 currentRoleCode - if (StringUtils.isNotEmpty(currentRoleCode)) { - template.header(CURRENT_ROLE_CODE, currentRoleCode); - } - } - } + 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); + } + } + } }