【问题标题】:Feign RequestInterceptor Can Not get httpRequestAttributsFeign RequestInterceptor 无法获取 httpRequestAttributs
【发布时间】:2019-05-31 09:08:28
【问题描述】:

我想拦截请求,并使用 feign RequestInterceptor 将 access_token 添加到 header 中。 但是当我在拦截器中调试时,我无法获取属性。它是空的。 我怎么才能得到它?

@Override
    public void apply(RequestTemplate requestTemplate) {
//the attributes is null, what happened
        ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes();
        if(ObjectUtil.isNull(attributes))
        {
            return;
        }
        HttpServletRequest request = Objects.requireNonNull(attributes).getRequest();
        if(ObjectUtil.isNull(request))
        {
            return;
        }
        if(request.getRequestURI().contains(SecurityConstants.MOBILE_TOKEN_URL))
        {
            requestTemplate.header("x-access-type", SecurityConstants.ACCESS_TYPE_PATIENT);
            return;
        }
        if(request.getRequestURI().contains(SecurityConstants.REGISTER_TOKEN_URL))
        {
            requestTemplate.header("x-access-type", SecurityConstants.ACCESS_TYPE_PATIENT);
            return;
        }
        Enumeration<String> headerNames = request.getHeaderNames();
        if (ObjectUtil.isNotNull(headerNames)) {
            while (headerNames.hasMoreElements()) {
                String name = headerNames.nextElement();
                if(name.equalsIgnoreCase("Authorization")) {
                    String values = request.getHeader(name);
                    requestTemplate.header(name, values);
                    break;
                }
            }
        }
    }

【问题讨论】:

    标签: feign


    【解决方案1】:

    您的问题是使用 servlet 上下文来获取请求,而不是 Feign requestTemplate。

    这个:

    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
         .getRequestAttributes();
    // other code to check and manipulate it
    

    应该是这样的:

    requestTemplate.url().contains("SOME_URL_FOR_TRIGGER") {
      requestTemplate.header("YOUR_HEADER", "YOUR_VALUE");
    }
    

    【讨论】:

      猜你喜欢
      • 2016-04-15
      • 2019-08-27
      • 2016-07-01
      • 2019-11-12
      • 2016-12-09
      • 1970-01-01
      • 2020-07-19
      • 2016-03-07
      • 2020-05-01
      相关资源
      最近更新 更多