Spring Cloud Feign调用令牌携带问题
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调用令牌携带问题相关推荐
- Spring Cloud - Feign调用问题
2019独角兽企业重金招聘Python工程师标准>>> 这两天在改造微服务远程调用方法时,由之前的'RestTemplate'方式,改为'FeignClient'方式. 遇到一个及其 ...
- Spring Cloud Feign 1(声明式服务调用Feign 简介)
Spring Cloud Feign基于Netflix Feign 同时整合了Spring Cloud Ribbon和Spring Cloud Hytrix,除了提供两者的强大功能外,它还提供了一种声 ...
- Spring Cloud Feign - 内部实现细节
1. 概述 Feign用于服务间调用,它的内部实现是一个包含Ribbon(负载均衡)的JDK-HttpURLConnection(Http)调用.虽然调用形式是类似于RPC,但是实际调用是Http,这 ...
- Spring Cloud Feign使用详解
通过前面两章对Spring Cloud Ribbon和Spring Cloud Hystrix的介绍,我们已经掌握了开发微服务应用时,两个重要武器,学会了如何在微服务架构中实现客户端负载均衡的服务调 ...
- Spring Cloud Feign 请求时附带请求头
Spring Cloud Feign 请求时附带请求头 问题描述 解决方案 FeignConfiguration 使用 配置修改 问题描述 Feign 在请求时是不会将 request 的请求头带着请 ...
- Spring Cloud的负载均衡Spring Cloud Ribbon和Spring Cloud Feign
一.客户端负载均衡:Spring Cloud Ribbon. Spring Cloud Ribbon是基于HTTP和TCP的客户端负载工具,它是基于Netflix Ribbon实现的.通过Spring ...
- Spring Cloud Feign传输Header,并保证多线程情况下也适用
Spring Cloud Feign传输Header,并保证多线程情况下也适用 一.现象 微服务在生产中,常遇到需要把 header 传递到下一子服务的情况(如服务A访问服务B的接口,需要传递head ...
- Spring Cloud远程服务调用
远程调用流程 Spring Cloud 在接口调用上,大致会经过如下几个组件配合: 1.Nacos 服务注册 2.Feign 服务调用 3.Hystrix 熔断器 4.Ribbon 负载均衡 5.Ht ...
- Spring Cloud Feign原理详解
目录 1.什么是Feign? 2.Open Feign vs Spring Cloud Feign 2.1.OpenFeign 2.2.Spring Cloud Open Feign 3.Spring ...
最新文章
- Android--学习路线指南
- 【Linux入门到精通系列讲解】Nginx详细介绍和安装使用(这一篇就够了)
- jquery-migrate.js
- 【v2.x OGE教程 18】 Entity相关
- EE4J项目情况汇总,微软加入Jakarta EE工作组
- linux 内核获取时间,Linux内核中的jiffies 以及时间的获取time
- 【技术博客-总览--重要】
- Redis 持久化——RDB
- [机器学习]-K近邻-最简单的入门实战例子
- 通过高速计算机网络和多媒体,全国2014.10办公自动化原理及应用试题
- intellij idea 2016.3.5 控制台取消行数限制
- 强化学习——从最简单的开始入手
- Linux下sdio设备扫描过程,[mmc]Linux下MMC/SD/SDIO的识别与操作
- 计算机专业英语词汇1500词
- 三星Galaxy S4 刷入CWM Recovery和获取ROOT教程
- Interesting卡常数
- 记录一下java的常用单词
- python图片转换成文字的手机软件_怎么把手机里的图片转换成WORD?迅捷文字识别帮你解决!...
- Macbook 安装Android Studio以及解决卡顿问题
- 转:阿里CEO张勇:领导者要善于“从后排把人往前拨”
热门文章
- html5数据推送应用开发 代码,HTML5数据推送应用开发
- 快速禁止Chrome浏览器缓存
- 在自我导向行为中使用“意志力”这个概念有什么问题?
- portainer 集群环境_Portainer实战
- flutter 叠加布局Stack,Positioned超出部分显示
- 超经典!国际著名计算机教育推动者发表计算机原理文档,面面俱到
- 效果图如何做出插画风格?SketchUp 插画风效果图渲染技巧
- PHP图书借阅管理系统,功能完善齐全,支持用户前台管理,和后台管理,支持PHP最新版7.x,数据库mysql
- signature=aff588228f0e2f8e22402c9f8bfc6ebe,来用百度密语吧!!!
- 如何使用vmware虚拟机上网