资讯专栏INFORMATION COLUMN

解决spring cloud Feign远程调用服务,添加headers解决拦截器拦截问题

walterrwu / 3122人阅读

摘要:使用做服务器时,经常会通过调用远程服务。有时候我们的远程服务可能做了某些权限验证。如果某没有,可能会被阻止调用。如果每个方法都手动设置,那未免太麻烦。可以通过一个切面,自动帮我们添加请求。

使用spring cloud 做saas服务器时,经常会通过Feign调用远程服务。有时候我们的远程服务可能做了某些权限验证。需要验证header或者token什么的。如果某没有token,可能会被阻止调用。那如何添加token呢。如果每个方法都手动设置headers,那未免太麻烦。可以通过一个切面,自动帮我们添加请求header。

@Configuration
public class FeignConfiguration implements RequestInterceptor {

private final Logger logger = LoggerFactory.getLogger(getClass());

@Override
public void apply(RequestTemplate template) {
    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
            .getRequestAttributes();
    HttpServletRequest request = attributes.getRequest();
    String authorization = request.getHeader("Authorization");

    template.header("Authorization", authorization);
}

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72684.html

相关文章

  • Spring Cloud Feign设计原理

    摘要:而从角色划分上来看,他们的职能是一致的提供调用服务。没有基于全部注解来做客户端注解协议解析,个人认为这个是一个不小的坑。真正影响性能的,是处理请求的环节。我们项目内部使用的是作为连接客户端。 什么是Feign? Feign 的英文表意为假装,伪装,变形, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式...

    陈江龙 评论0 收藏0
  • spring-cloud-feign源码深度解析

    摘要:内部使用了的动态代理为目标接口生成了一个动态代理类,这里会生成一个动态代理原理统一的方法拦截器,同时为接口的每个方法生成一个拦截器,并解析方法上的元数据,生成一个请求模板。的核心源码解析到此结束了,不知道是否对您有无帮助,可留言跟我交流。 Feign是一个声明式的Web服务客户端。这使得Web服务客户端的写入更加方便 要使用Feign创建一个界面并对其进行注释。它具有可插拔注释支持,包...

    vibiu 评论0 收藏0
  • Spring Cloud 参考文档(声明式REST客户端:Feign

    摘要:继承支持通过单继承接口支持样板,这允许将通用操作分组为方便的基本接口。,记录基本信息以及请求和响应。例如,类定义参数和以下客户端使用注解使用类 声明式REST客户端:Feign Feign是一个声明式的Web服务客户端,它使编写Web服务客户端变得更容易,要使用Feign,请创建一个接口并对其进行注解,它具有可插拔的注解支持,包括Feign注解和JAX-RS注解,Feign还支持可插拔...

    wqj97 评论0 收藏0
  • Spring Cloud OAuth 微服务内部Token传递的源码实现解析

    摘要:源码非常简单谈谈实现的问题当请求上线文没有如果调用会直接,这个肯定会报错,因为上下文失败如果设置线程隔离,这里也会报错。导致安全上下问题传递不到子线程中。欢迎关注我们获得更多的好玩实践 背景分析 showImg(https://segmentfault.com/img/remote/1460000018899024?w=494&h=245); 1.客户端携带认证中心发放的token,...

    Michael_Ding 评论0 收藏0
  • springCloud学习3(Netflix Hystrix弹性客户端)

    摘要:在舱壁模式中可以隔离每个远程资源,并分配各自的线程池,使之互不影响。 springcloud 总集:https://www.tapme.top/blog/detail/2019-02-28-11-33 本次用到全部代码见文章最下方。 一、为什么要有客户端弹性模式   所有的系统都会遇到故障,分布式系统单点故障概率更高。如何构建应用程序来应对故障,是每个软件开发人员工作的关键部分。但是通...

    yagami 评论0 收藏0

发表评论

0条评论

walterrwu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<