在服务中调用远程服务时,会通过open feign调用对方服务暴露的feign接口,此时会丢失请求头,例在调用时携带的token会丢失,通过拦截器增强
package com.itheima.sys.config;
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;
import java.util.Enumeration;
/**
* 对当前模块所有的Feign请求进行拦截器
* @author: itheima
* @create: 2021-07-30 15:17
*/
@Configuration
public class FeignConfig implements RequestInterceptor {
@Override
public void apply(RequestTemplate template) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if(attributes!=null){
HttpServletRequest request = attributes.getRequest();
//设置授权头
template.header("Authorization", request.getHeader("Authorization"));
}
}
}