spring cloud各个微服务之间如何相互调用(FeignFeign带token访问服务接口)
Posted lykbk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring cloud各个微服务之间如何相互调用(FeignFeign带token访问服务接口)相关的知识,希望对你有一定的参考价值。
1、首先先看什么是Feign。
这里引用“大漠知秋”的博文https://blog.csdn.net/wo18237095579/article/details/83343915
2、若其他服务的接口未做权限处理,参照上文第1点的博文即可。
3、若其他服务的接口做了权限的处理(例如OAuth 2)时该如何访问?
a、有做权限处理的服务接口直接调用会造成调用时出现http 401未授权的错误,继而导致最终服务的http 500内部服务器错误
b、解决方式:最方便的就是往请求头里加上token,一起带过去;
b1、Feign有提供一个接口,RequestInterceptor;
只要实现这个接口,简单做一些处理,比如说我们验证请求头的token叫Access-Token
,我们就先取出当前请求的token,然后放到feign请求头上;
b2、新建配置类
-
-
public class FeignConfig implements RequestInterceptor
-
-
public void apply(RequestTemplate requestTemplate)
-
ServletRequestAttributes attributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
-
HttpServletRequest request = attributes.getRequest();
-
requestTemplate.header(HttpHeaders.AUTHORIZATION, request.getHeader(HttpHeaders.AUTHORIZATION));
-
-
b3、在@FeignClient接口里添加configuration = FeignConfig.class
@FeignClient(value="被调用的服务名",configuration=FeignConfig.class)
即可对做权限处理的服务接口进行调用
1、首先先看什么是Feign。 这里引用“大漠知秋”的博文https://blog.csdn.net/wo18237095579/article/details/83343915
[1, Shǒuxiān xiān kàn shénme shì Feign. Zhèlǐ yǐnyòng “dàmò zhī qiū” de bówén https://Blog.Csdn.Net/wo18237095579/article/details/83343915]
1. First look at what is Feign.
Here is a quote on "Da Mo Zhiqiu" https://blog.csdn.net/wo18237095579/article/details/83343915
Here is a quote on "Da Mo Zhiqiu" https://blog.csdn.net/wo18237095579/article/details/83343915
以上是关于spring cloud各个微服务之间如何相互调用(FeignFeign带token访问服务接口)的主要内容,如果未能解决你的问题,请参考以下文章