package com.iailab.module.shasteel.config; import com.iailab.module.shasteel.util.token.IailabClient; import feign.RequestInterceptor; import feign.RequestTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpHeaders; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @Configuration public class FeignTokenInterceptor implements RequestInterceptor { @Autowired private IailabClient iailabClient; @Override public void apply(RequestTemplate requestTemplate) { // 从当前请求上下文中获取Token String token = getTokenFromCurrentRequest(); if (token == null) { // 如果没有获取到Token,从system-server中获取token token = iailabClient.getToken(); if (token!= null) { requestTemplate.header(HttpHeaders.AUTHORIZATION, token); } Long tenantId = iailabClient.getTenantId(); if (tenantId != null) { requestTemplate.header("tenant-id", String.valueOf(tenantId)); } } } private String getTokenFromCurrentRequest() { ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); if (attributes!= null) { return attributes.getRequest().getHeader(HttpHeaders.AUTHORIZATION); } return null; } }