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 ed74cfc..d2be1a7 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,12 +1,12 @@ package com.chinaunicom.mall.ebtp.common.config; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; + import feign.RequestInterceptor; import feign.RequestTemplate; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.servlet.http.HttpServletRequest; /** * fegin调用时 header中添加JwtToken @@ -14,14 +14,24 @@ import javax.servlet.http.HttpServletRequest; @Configuration public class FeignConfig implements RequestInterceptor { - @Override - public void apply(RequestTemplate template) { - ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); - if (null != attributes) { - HttpServletRequest request = attributes.getRequest(); - String token = request.getHeader("JwtToken"); - template.header("JwtToken", token); - } - } + private final String AUTHORIZATION_HEADER = "Authorization"; + private final String BEARER_TOKEN_TYPE = "Bearer"; + + @Override + public void apply(RequestTemplate template) { +// ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); +// if (null != attributes) { +// HttpServletRequest request = attributes.getRequest(); +// String token = request.getHeader("JwtToken"); +// template.header("JwtToken", token); +// } + SecurityContext securityContext = SecurityContextHolder.getContext(); + Authentication authentication = securityContext.getAuthentication(); + + if (authentication != null && authentication.getCredentials() instanceof String) { + String token = (String) authentication.getCredentials(); + template.header(AUTHORIZATION_HEADER, String.format("%s %s", BEARER_TOKEN_TYPE, token)); + } + } }