feign调用不经过网关,是一种http的调用
需要携带网关的session信息,创建一个feign的拦截器实现 RequestInterceptor
列子:
@EnableFeignClients @Configuration public class FeignRequestInterceptor implements RequestInterceptor { @Override public void apply(RequestTemplate requestTemplate) { //通过RequestContextHolder获取到请求 RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); if (requestAttributes == null) { return; } HttpServletRequest req = ((ServletRequestAttributes) requestAttributes).getRequest(); Enumeration<String> headerNames = req.getHeaderNames(); if (headerNames != null) { while (headerNames.hasMoreElements()) { String name = headerNames.nextElement(); Enumeration<String> values = req.getHeaders(name); while (values.hasMoreElements()) { String value = values.nextElement(); requestTemplate.header(name, value); } } } } }