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