• Feign配置远程调用时携带原请求的token


    背景

    项目中需要用到以前开发的一套项目,需要复用里面的一些接口,远程调用发现出现了空指针异常,原来是token为null,尝试解决该问题。

    受限于之前开发的接口中没有参数,所以简单使用注解无法解决,故采用拦截请求的方式

    环境介绍

    SpringBoot 2.3.3.Release + OpenFeign 2.2.7.Release

    配置过程

    1、引入依赖, 配置feign

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
        <version>2.2.7.RELEASE</version>
    </dependency>
    

    2、注入配置类

    @Configuration
    @Slf4j
    public class FeignConfiguration implements RequestInterceptor {
        @Override
        public void apply(RequestTemplate requestTemplate) {
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            HttpServletRequest request = attributes.getRequest();
            String token = request.getHeader(HeaderConstants.TOKEN_HEADER_NAME); // HeaderConstants.TOKEN_HEADER_NAME 替换为自己的请求头名称,下同
            if(token == null){
                log.info("--请求中未携带token.......");
                return;
            }
            requestTemplate.header(HeaderConstants.TOKEN_HEADER_NAME, token);
        }
    }
    

    3、在@FeignClient注解中标注配置类

    @FeignClient(url = "${gizwits.config.system-api.url:}",value = IServiceName.SERVICE_NAME, path = "sys_user", configuration = FeignConfiguration.class)
    

    4、如果你debug的话,会发现FeignConfiguration中的attributes获取不到,需要再配置文件中添加如下配置就可以了

    hystrix:
      command:
        default:
          execution:
            isolation:
              strategy: SEMAPHORE
    

    大功告成!!

  • 相关阅读:
    在Raspberry上使用小度WIFI
    使用Doxyen和Graghviz为自己的库快速做个文档
    在Cocos2d-X中新建Android项目
    管理——执行
    windows环境下搭建Cocos2d-X开发环境
    Spark wordcount 编译错误 -- reduceByKey is not a member of RDD
    记录一次简单且容易犯的React Hook Router 相关错误
    关于微信浏览器H5页面软键盘关闭导致页面空缺
    【转载】关于vue-router的使用
    文字放大缩小
  • 原文地址:https://www.cnblogs.com/hnxbp/p/14975363.html
Copyright © 2020-2023  润新知