feign请求头传递

  • 前言:在我们token进行鉴权操作时,使用feign进行请求转发会导致请求头的丢失,这个时候就需要进行请求头的传递操作
1. 创建feign拦截器
 @Component
  public class FeignRequestInterceptor implements RequestInterceptor {
      @Override
      public void apply(RequestTemplate requestTemplate) {
          ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
                  .getRequestAttributes();
          if (Objects.isNull(attributes)){
              return;
          }
          HttpServletRequest request = attributes.getRequest();
          Enumeration<String> headerNames = request.getHeaderNames();
          if (headerNames != null) {
              while (headerNames.hasMoreElements()) {
                  String name = headerNames.nextElement();
                  String values = request.getHeader(name);
                  requestTemplate.header(name, values);
              }
          }
      }
  }
2. Hystrix透传ThreadLocal数据
  @Component
  public class RequestAttributeHystrixConcurrencyStrategy extends HystrixConcurrencyStrategy {
  
      public RequestAttributeHystrixConcurrencyStrategy() {
          try {
              HystrixPlugins.reset();
              HystrixPlugins.getInstance().registerConcurrencyStrategy(this);
          }
          catch (Exception e) {
              e.printStackTrace();
          }
      }
  
      @Override
      public <T> Callable<T> wrapCallable(Callable<T> callable) {
          RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
          return  new Callable<T>() {
              @Override
              public T call() throws Exception {
                  RequestContextHolder.setRequestAttributes(requestAttributes);
                  return callable.call();
              }
          };
      }
  
  }
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值