package com.szwl.feign.interceptor; import com.szwl.constant.ConfigConsts; import feign.RequestInterceptor; import feign.RequestTemplate; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.util.Enumeration; /** * feign请求带上前端的token * @author wuhs */ @Slf4j public class FeignClientRequestHeaderInterceptor implements RequestInterceptor { @Value("${spring.application.name:}") private String applicationName; @Override public void apply(RequestTemplate requestTemplate) { //获取请求对象 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); if (null != attributes) { HttpServletRequest request = attributes.getRequest(); //找出当前请求头 Enumeration headers = request.getHeaderNames(); //把所有请求头加入 while (headers.hasMoreElements()) { String name = headers.nextElement(); if ("content-length".equalsIgnoreCase(name)) { continue; } String value = request.getHeader(name); requestTemplate.header(name, value); } } //添加内部跳过鉴权请求头 requestTemplate.header(ConfigConsts.INNER_FEIGN, "1"); } }