Spring Cloud Feign调用令牌携带问题

微服务项目中模块之间的调用,检测令牌的合法性问题不可避免。使用feign拦截器可以解决。

1:在公用模块中添加maven依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ANneHCER-1585737122162)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20200401182230144.png)]

<!-- RequestInterceptor拦截器需要 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- 获取令牌需要 -->
<!-- 注意此依赖里面默认配置认证类等,如果有配网关中依赖了此jar包需要排除掉,不然小时登入不经网关 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-security</artifactId>
</dependency>

2:编写拦截器

public class FeignClientInterceptor implements RequestInterceptor {private static final String AUTHORIZATION_HEADER = "Authorization";private static final String BEARER_TOKEN_TYPE = "Bearer";@Overridepublic void apply(RequestTemplate requestTemplate) {// 是否登入SecurityContext securityContext = SecurityContextHolder.getContext();// 获取认证信息Authentication authentication = securityContext.getAuthentication();//是否存在if (!ObjectUtils.isEmpty(authentication) && authentication.getDetails() instanceof OAuth2AuthenticationDetails) {OAuth2AuthenticationDetails details = (OAuth2AuthenticationDetails) authentication.getDetails();// 往模块中传递requestTemplate.header(AUTHORIZATION_HEADER, String.format("%s %s", BEARER_TOKEN_TYPE, details.getTokenValue()));}}}

3:FeignClient添加拦截器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z2e4042C-1585737122163)(C:\Users\DELL\AppData\Roaming\Typora\typora-user-images\image-20200401182820483.png)]

/*** Create By IntelliJ IDEA** @author мr.тang* @date 2020/3/25 12:04* @email tangheng.java@outlook.com* path = "/station" 头路径*/
@FeignClient(value = SpServiceList.SP_SERVICE_STATION, configuration = FeignClientInterceptor.class, path = "/123")
public interface StationClient {/*** @Description xxx* @Date 2020/3/25 12:07*/// 请求uri为 /123/abc/findXXX@GetMapping("/abc/findXXX")Set<String> findXXX();
}

到这儿微服务的模块调用就可以解决了,希望能帮到你们,别忘了@EnableFeignClients。

Spring Cloud Feign调用令牌携带问题相关推荐

  1. Spring Cloud - Feign调用问题

    2019独角兽企业重金招聘Python工程师标准>>> 这两天在改造微服务远程调用方法时,由之前的'RestTemplate'方式,改为'FeignClient'方式. 遇到一个及其 ...

  2. Spring Cloud Feign 1(声明式服务调用Feign 简介)

    Spring Cloud Feign基于Netflix Feign 同时整合了Spring Cloud Ribbon和Spring Cloud Hytrix,除了提供两者的强大功能外,它还提供了一种声 ...

  3. Spring Cloud Feign - 内部实现细节

    1. 概述 Feign用于服务间调用,它的内部实现是一个包含Ribbon(负载均衡)的JDK-HttpURLConnection(Http)调用.虽然调用形式是类似于RPC,但是实际调用是Http,这 ...

  4. Spring Cloud Feign使用详解

     通过前面两章对Spring Cloud Ribbon和Spring Cloud Hystrix的介绍,我们已经掌握了开发微服务应用时,两个重要武器,学会了如何在微服务架构中实现客户端负载均衡的服务调 ...

  5. Spring Cloud Feign 请求时附带请求头

    Spring Cloud Feign 请求时附带请求头 问题描述 解决方案 FeignConfiguration 使用 配置修改 问题描述 Feign 在请求时是不会将 request 的请求头带着请 ...

  6. Spring Cloud的负载均衡Spring Cloud Ribbon和Spring Cloud Feign

    一.客户端负载均衡:Spring Cloud Ribbon. Spring Cloud Ribbon是基于HTTP和TCP的客户端负载工具,它是基于Netflix Ribbon实现的.通过Spring ...

  7. Spring Cloud Feign传输Header,并保证多线程情况下也适用

    Spring Cloud Feign传输Header,并保证多线程情况下也适用 一.现象 微服务在生产中,常遇到需要把 header 传递到下一子服务的情况(如服务A访问服务B的接口,需要传递head ...

  8. Spring Cloud远程服务调用

    远程调用流程 Spring Cloud 在接口调用上,大致会经过如下几个组件配合: 1.Nacos 服务注册 2.Feign 服务调用 3.Hystrix 熔断器 4.Ribbon 负载均衡 5.Ht ...

  9. Spring Cloud Feign原理详解

    目录 1.什么是Feign? 2.Open Feign vs Spring Cloud Feign 2.1.OpenFeign 2.2.Spring Cloud Open Feign 3.Spring ...

最新文章

  1. Android--学习路线指南
  2. 【Linux入门到精通系列讲解】Nginx详细介绍和安装使用(这一篇就够了)
  3. jquery-migrate.js
  4. 【v2.x OGE教程 18】 Entity相关
  5. EE4J项目情况汇总,微软加入Jakarta EE工作组
  6. linux 内核获取时间,Linux内核中的jiffies 以及时间的获取time
  7. 【技术博客-总览--重要】
  8. Redis 持久化——RDB
  9. [机器学习]-K近邻-最简单的入门实战例子
  10. 通过高速计算机网络和多媒体,全国2014.10办公自动化原理及应用试题
  11. intellij idea 2016.3.5 控制台取消行数限制
  12. 强化学习——从最简单的开始入手
  13. Linux下sdio设备扫描过程,[mmc]Linux下MMC/SD/SDIO的识别与操作
  14. 计算机专业英语词汇1500词
  15. 三星Galaxy S4 刷入CWM Recovery和获取ROOT教程
  16. Interesting卡常数
  17. 记录一下java的常用单词
  18. python图片转换成文字的手机软件_怎么把手机里的图片转换成WORD?迅捷文字识别帮你解决!...
  19. Macbook 安装Android Studio以及解决卡顿问题
  20. 转:阿里CEO张勇:领导者要善于“从后排把人往前拨”

热门文章

  1. html5数据推送应用开发 代码,HTML5数据推送应用开发
  2. 快速禁止Chrome浏览器缓存
  3. 在自我导向行为中使用“意志力”这个概念有什么问题?
  4. portainer 集群环境_Portainer实战
  5. flutter 叠加布局Stack,Positioned超出部分显示
  6. 超经典!国际著名计算机教育推动者发表计算机原理文档,面面俱到
  7. 效果图如何做出插画风格?SketchUp 插画风效果图渲染技巧
  8. PHP图书借阅管理系统,功能完善齐全,支持用户前台管理,和后台管理,支持PHP最新版7.x,数据库mysql
  9. signature=aff588228f0e2f8e22402c9f8bfc6ebe,来用百度密语吧!!!
  10. 如何使用vmware虚拟机上网