已解决
SpringCloud -Token传递之Feign
来自网友在路上 194894提问 提问时间:2023-11-19 17:30:22阅读次数: 94
最佳答案 问答题库948位专家为你答疑解惑
目录
方法一 @RequestHeader
方法二 使用Feign的Interceptor
步骤一 实现RequestInterceptor接口
步骤二:配置Feign
通常微服务对于用户认证信息解析有两种方案
- 在
gateway
就解析用户的token
然后路由的时候把userId
等相关信息添加到header
中传递下去。 - 在
gateway
直接把token
传递下去,每个子微服务自己在过滤器解析token
现在有一个从 A 服务调用 B 服务接口的内部调用业务场景,无论是哪种方案我们都需把 header
从 A 服务传递到 B 服务。
方法一 @RequestHeader
在请求调用方的微服务方法头中添加@RequestHeader
用来接收用户端请求时传入的token
@RequestMapping("/deleteByOpenId")
public Object deleteByOpenId(@RequestParam("opendId") String opendId, @RequestHeader("token") String token) {Object integer = appMpLoginAuthFeginClient.deleteByOpenId(opendId, token);return integer;
}
这里获取到header中的“token”在采用Feign调用其他微服务时将获取到的Token传入到下一个微服务的请求头中
@RequestMapping("/rest/user-service/in/mpLoginAuth/deleteByOpenId")
Object deleteByOpenId(@RequestParam("opendId") String opendId, @RequestHeader("token") String token);
这里的@RequestHeader
的意思是将参数token放入到下个请求的请求头header中。
方法二 使用Feign的Interceptor
步骤一 实现RequestInterceptor接口
重写RequestInterceptor接口的apply,获取到token
public class TokenRequestIntecepor implements RequestInterceptor {@Overridepublic void apply(RequestTemplate requestTemplate) {RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();ServletRequestAttributes srat = (ServletRequestAttributes) requestAttributes;HttpServletRequest request = srat.getRequest();String token = request.getHeader("token");if (StringUtils.isNotBlank(token)) {//将token传递出去 requestTemplate.header("token", token); } } }}}
}
- 先获取到HTTPServletRequest
- 接着在从request中获取到header的“token”
- 将这个token传递给requestTemplate
- Interceptor实现之后还需要对这个Interceptor设置配置
步骤二:配置Feign
application.yaml文件中添加如下配置
feign:client:config:default:loggerLevel: fullrequestInterceptors: com.example.feigndemo.interceptor.TokenRequestIntecepor
查看全文
99%的人还看了
相似问题
- Kotlin学习——kt里的集合,Map的各种方法之String篇
- Office文件在线预览大全-Word文档在线预览的实现方法-OFD文档在线预览-WPS文件在线预览
- composer切换全局镜像源的方法
- Python通过selenium调用IE11浏览器报错解决方法
- 测试用例的设计方法(全):正交实验设计方法|功能图分析方法|场景设计方发
- Java8新特性 ----- Lambda表达式和方法引用/构造器引用详解
- C#中抽象类、抽象方法和接口暨内联临时变量的精彩表达
- ChatGLM2 大模型微调过程中遇到的一些坑及解决方法(更新中)
- 类方法,静态方法和实例方法的区别及应用场景
- 【链表的说明、方法---顺序表与链表的区别】
猜你感兴趣
版权申明
本文"SpringCloud -Token传递之Feign":http://eshow365.cn/6-39494-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!